【问题标题】:Scrapy keeps return empty valueScrapy保持返回空值
【发布时间】:2017-06-06 10:12:43
【问题描述】:

我在刮http://www.germandeli.com/Meats/Sausages

我想从页面中提取每个产品(或项目)的链接。我使用scrapy shell进行测试,但它一直返回空值[]。

这是我使用的代码:

response.xpath('*//h2[@class="item-cell-name"]/a/@href')

任何帮助将不胜感激。

【问题讨论】:

  • 当浏览器请求并禁用 javascript 时,会显示一条消息,内容为 To view this site, you must enable JavaScript or upgrade to a JavaScript-capable browser. 。虽然 scrapy 不呈现 javascript 这可能是您的空结果的原因。
  • @FrankMartin 感谢您的回复。我认为你是对的。有什么办法可以解决这个问题吗?
  • 一种方法是使用(无头)浏览器:一些使用 Selenium,另一些使用 Splash + scrapy-splash 插件:您基本上将渲染页面的任务委托给这个外部 Splash 服务浏览器会做,并在渲染后将 HTML 发回给您。

标签: scrapy


【解决方案1】:

不幸的是,项目内容是通过 JS 呈现的。但幸运的是,该 URL 发送了一个 AJAX 请求来获取项目的 JSON。这使我们更容易解析它。您可以检查谷歌浏览器控制台中的 XHR 选项卡,以使用所需的标头来模拟请求。

This URL 返回产品列表。可以使用 URL 中的 limitoffset 参数来获取下一组数据。您还可以使用标准库中的json.loads 来解析 JSON 内容。

【讨论】:

    猜你喜欢
    • 2016-11-12
    • 2019-10-21
    • 2021-12-20
    • 2021-06-03
    • 2019-06-26
    • 2021-05-01
    • 2021-06-22
    • 1970-01-01
    • 2020-11-18
    相关资源
    最近更新 更多