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]