【发布时间】:2020-12-17 04:51:41
【问题描述】:
我想把这个网站上的所有cmets都刮掉:https://fr.trustpilot.com/review/www.gammvert.fr
我想要评论、评分和日期。我设法获得了评论和评分,但没有获得日期。
到目前为止,这是我的脚本:
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:html
我想要“日期时间”或“标题”,而不是文本,因为当它是最近的时,那不是指定的日期,而是像“两小时前”这样没有意义。
有什么想法吗?
非常感谢:)
【问题讨论】:
-
这是由 javascript 显示的。不幸的是,请求没有出路。你需要去硒或scrapy splash。
-
如果您将此javascript代码
Array.from(document.getElementsByClassName("review-content-header__dates")).map(e=>e.textContent)粘贴到浏览器控制台中,您可以获得这些日期,但您需要清理它们。
标签: python python-3.x web-scraping beautifulsoup