【问题标题】:Scrapy Only Returns Empty ArraysScrapy 只返回空数组
【发布时间】:2021-06-03 13:17:09
【问题描述】:

所以我用

开始我的 scrapy shell
scrapy shell 'https://www.amazon.com/s?k=tomatoes&ref=nb_sb_noss_1'

我正在尝试抓取产品的标题,所以我输入了

response.xpath('//span[@class="a-size-base-plus a-color-base a-text-normal"]').getall()

并获取:[]

当我在 CSS 中尝试使用

response.css("span.a-size-base-plus a-color-base a-text-normal").getall()

我仍然得到:[]

我不明白为什么即使我从网站复制和粘贴标签和类,它也找不到元素。

我也尝试为 XPath 和 CSS 中的类编写 a-size-base-plus,但我仍然一无所获

【问题讨论】:

    标签: web-scraping terminal scrapy


    【解决方案1】:

    如果要匹配元素上的多个类,则需要将类之间的空格替换为点:

    response.css("span.a-size-base-plus.a-color-base.a-text-normal").getall()
    

    代替:

    response.css("span.a-size-base-plus a-color-base a-text-normal").getall()
    

    你的带空格的选择器是这样说的:给我a-color-base 中的所有a-text-normal 元素在span 元素中的类a-size-base-plus。这当然不是你想要的。

    我还必须设置用户代理才能获得正确的结果。请参阅this answer,了解如何使用 scrapy shell 设置用户代理。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-19
      • 2020-09-03
      • 1970-01-01
      • 2016-11-12
      • 2012-11-12
      • 1970-01-01
      相关资源
      最近更新 更多