Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 找不到xpath_Python_Xpath_Scrapy_Screen Scraping - Fatal编程技术网

Python 找不到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

我想把这些评论刮下来 但是我找到的xpath没有返回任何值:

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部分?我必须使用硒吗?