Python 找不到xpath
我想把这些评论刮下来 但是我找到的xpath没有返回任何值:Python 找不到xpath,python,xpath,scrapy,screen-scraping,Python,Xpath,Scrapy,Screen Scraping,我想把这些评论刮下来 但是我找到的xpath没有返回任何值: response.xpath('//*[@id="ratings-reviews"]/div[5]/div[1]/div[2]/div[1]/div[4]/text()').extract() 非常感谢您的帮助。如@Mads Hansen所述,如果没有Javascript支持,您将无法完成此任务。因此,是的,Selenium或类似的工具在这里是必需的。或者,您可以下载包含评论的JSON,并从中提取评论: http
response.xpath('//*[@id="ratings-reviews"]/div[5]/div[1]/div[2]/div[1]/div[4]/text()').extract()
非常感谢您的帮助。如@Mads Hansen所述,如果没有
Javascript
支持,您将无法完成此任务。因此,是的,Selenium
或类似的工具在这里是必需的。或者,您可以下载包含评论的JSON
,并从中提取评论:
https://api.bazaarvoice.com/data/reviews.json?Filter=contentlocale%3Aen*&Filter=ProductId%3AP378284&Sort=SubmissionTime%3Adesc&Limit=30&Offset=0&Include=Products%2CComments&Stats=Reviews&passkey=rwbw526r2e7spptqd2qzbkp7&apiversion=5.4&Locale=en_US
文本审查代码:
import requests
resp = requests.get("https://api.bazaarvoice.com/data/reviews.json?Filter=contentlocale%3Aen*&Filter=ProductId%3AP378284&Sort=SubmissionTime%3Adesc&Limit=30&Offset=0&Include=Products%2CComments&Stats=Reviews&passkey=rwbw526r2e7spptqd2qzbkp7&apiversion=5.4&Locale=en_US")
data = resp.json()
for el in data['Results']:
print (el['ReviewText'])
输出:
您需要实现一个单独的请求来提取评论,因为这些评论在页面源中不可用。试试这个
def start_requests(self):
url = 'https://api.bazaarvoice.com/data/reviews.json?Filter=contentlocale%3Aen*&Filter=ProductId%3AP378284&Sort=SubmissionTime%3Adesc&Limit=30&Offset=0&Include=Products%2CComments&Stats=Reviews&passkey=rwbw526r2e7spptqd2qzbkp7&apiversion=5.4&Locale=en_US'
return [Request(url=url, callback=self.parse)]
def parse(self, response):
review = json.loads(response.text)['Results']
在
review
变量中,您将拥有所有与评论相关的字段,如ReviewText
,Rating
我在您提供的网站URL上没有看到任何评论。也没有看到id为“ratings reviews”的HTML中的任何内容。你确定你有正确的url吗?当我在Chrome开发者工具中搜索时,XPath匹配并查找内容。很可能在加载页面的原始HTML后,通过JavaScript的渐进增强将注释添加到文档中,并且不评估JavaScript的scraper可能无法使用这些注释。如何刮取JavaScript部分?我必须使用硒吗?