Python 如何使用BeautifulSoup获得datetime

Python 如何使用BeautifulSoup获得datetime,python,python-3.x,web-scraping,beautifulsoup,Python,Python 3.x,Web Scraping,Beautifulsoup,我想在这个网站上删除所有评论: 我想有评论,评级和日期。我设法获得了评论和评级,但没有获得日期 以下是我目前的脚本: import requests from requests import get from bs4 import BeautifulSoup import pandas as pd import numpy as np root_url = 'https://fr.trustpilot.com/review/jardiland.com' urls = [ '{root}?pag

我想在这个网站上删除所有评论:

我想有评论,评级和日期。我设法获得了评论和评级,但没有获得日期

以下是我目前的脚本:

import requests
from requests import get
from bs4 import BeautifulSoup
import pandas as pd
import numpy as np

root_url = 'https://fr.trustpilot.com/review/jardiland.com'
urls = [ '{root}?page={i}'.format(root=root_url, i=i) for i in range(1,9) ]

comms = []
notes = []
dates = []

for url in urls: 
    results = requests.get(url)

    soup = BeautifulSoup(results.text, "html.parser")

    commentary = soup.find_all('div', class_='review-content')

    for container in commentary:

        comm  = container.find('p', class_ = 'review-content__text').text.strip()
        comms.append(comm)

        note = container.find('div', class_ = 'star-rating star-rating--medium').find('img')['alt']
        notes.append(note)

        date = container.div.div.find('div', class_ = 'review-content-header__dates')
        dates.append(date)

data = pd.DataFrame({
    'comms' : comms,
    'notes' : notes,
    'dates' : dates
    })

data['comms'] = data['comms'].str.replace('\n', '')


#print(data.head())
data.to_csv('filetest.csv', sep=';', index=False)
以下是日期的html:

我希望有“datetime”或“title”,但不是文本,因为当它是最近的,这不是指定的日期,而是“两小时前”,这是毫无意义的

有什么想法吗


非常感谢:)

数据收集在JSON\u LD中。确保您获得Trustpilot的许可

导入json
来自导入会话的请求
从bs4导入BeautifulSoup
URL='1〕https://fr.trustpilot.com/review/jardiland.com?page=2'
会话=会话()
r=session.get(URL)
soup=BeautifulSoup(右文本)
data=soup.find('script',{'type':'application/ld+json'})
data_json=json.load(data.getText(strip=True))
#现在您可以将数据评估为字典

日期是动态加载的,因此
请求
不支持它。但是,这些日期在网站上以JSON格式提供,您可以使用模块找到它们,并使用模块将它们转换为
dict

输出:

                                               comms  ...                      dates
0  Suite à un achat effectué fin novembre, j’ai e...  ...  2020-12-11T10:37:32+00:00
1  Aujourd'hui dans le magasin de Beaucouzé Anger...  ...  2020-12-05T17:28:57+00:00
2  A FUIR! Sur les deux commandes passée : - La p...  ...  2020-12-04T20:31:34+00:00
3  Si vous avez une réclamation évitez le Jardila...  ...  2020-12-01T07:18:55+00:00
4  Quelle honten ! J'ai acheté une nappe ce weeke...  ...  2020-11-25T10:01:31+00:00

[5 rows x 3 columns]

这是通过javascript显示的。不幸的是,请求是没有出路的。您需要选择selenium或scrapy splash。如果您在浏览器控制台中粘贴此javascript代码
Array.from(document.getElementsByClassName(“review-content-header\uu dates”)).map(e=>e.textContent)
,您可以获得这些日期,但需要清除它们。它可以工作,非常感谢:)更新
                                               comms  ...                      dates
0  Suite à un achat effectué fin novembre, j’ai e...  ...  2020-12-11T10:37:32+00:00
1  Aujourd'hui dans le magasin de Beaucouzé Anger...  ...  2020-12-05T17:28:57+00:00
2  A FUIR! Sur les deux commandes passée : - La p...  ...  2020-12-04T20:31:34+00:00
3  Si vous avez une réclamation évitez le Jardila...  ...  2020-12-01T07:18:55+00:00
4  Quelle honten ! J'ai acheté une nappe ce weeke...  ...  2020-11-25T10:01:31+00:00

[5 rows x 3 columns]