【问题标题】:Cannot find xpath找不到 xpath
【发布时间】:2020-11-15 22:24:45
【问题描述】:

我想抓取https://www.sephora.com/product/double-wear-stay-in-place-makeup-P378284?icid2=products%20grid:p378284 的评论 但是我找到的 xpath 没有返回任何值:

response.xpath('//*[@id="ratings-reviews"]/div[5]/div[1]/div[2]/div[1]/div[4]/text()').extract()

感谢任何帮助。

【问题讨论】:

  • 我在您提供的网站 URL 上没有看到任何评论。在 id="ratings-reviews" 的 HTML 中也看不到任何内容。你确定你有正确的网址吗?
  • 当我在 Chrome 开发人员工具中搜索时,XPath 匹配并找到内容。 cmets 很可能是在加载该页面的原始 HTML 之后通过使用 JavaScript 的渐进增强添加到文档中的,并且可能不适用于不评估 JavaScript 的抓取工具。
  • 如何抓取 JavaScript 部分?我必须使用硒吗?

标签: python xpath scrapy screen-scraping


【解决方案1】:

您需要实现一个单独的请求来提取评论,因为这些在页面源中不可用。试试这个

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 变量中,您将拥有所有评论的相关字段,例如ReviewTextRating

【讨论】:

    【解决方案2】:

    正如@Mads Hansen 所说,如果没有Javascript 支持,您将无法获取此信息。所以是的,这里需要Selenium 或类似的工具。或者,您可以下载包含评论的JSON 并从那里提取 cmets:

    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'])
    

    输出:

    【讨论】:

      猜你喜欢
      • 2014-11-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-27
      • 2016-11-11
      • 2018-08-30
      相关资源
      最近更新 更多