【问题标题】:Scrapy output not matching up with what I see when I click the link that Scrapy says it is crawling当我单击 Scrapy 说它正在爬行的链接时,Scrapy 输出与我看到的不匹配
【发布时间】:2019-02-22 22:28:20
【问题描述】:

这是我的第一个问题

我现在正在研究一个 Scrapy 蜘蛛,但它没有提供我预期的输出。我正在尝试从页面中获取所有链接,但没有得到任何链接。具体来说,来自this page 我想要所有产品链接。 要选择它们,我正在使用

rug_urls = response.xpath('//a[@class="a-link-normal a-text-normal"]/@href').getall()

但这没有给我任何东西。所以只是为了看看会发生什么,我用了

rug_urls = response.xpath('//a').getall()

它给了我

[u'<a onclick="window.location.reload()">Try different image</a>', 
u'<a href="https://www.amazon.com/gp/help/customer/display.html/ref=footer_cou?ie=UTF8&amp;nodeId=508088">Conditions of Use</a>', 
u'<a href="https://www.amazon.com/gp/help/customer/display.html/ref=footer_privacy?ie=UTF8&amp;nodeId=468496">Privacy Policy</a>']

这似乎与该网站完全不匹配。然而控制台输出肯定告诉我这是正在被抓取的链接。我特别困惑,因为早些时候我的代码按预期工作,但只有一次,从那时起它没有以任何有意义的方式改变。任何帮助将不胜感激。提前致谢。

【问题讨论】:

  • 你在scrapy shell 中测试过这个吗?因为您的第一个 XPath 非常适合我。可能是亚马逊检测到你在做什么,他们正在阻止你。
  • 我怎么知道是不是这样?
  • 打开scrapy shell中的URL,然后运行view(response)在浏览器中查看响应。也许有消息。
  • 另一方面,也许您所做的一个小改动实际上具有这种效果。你能从你的蜘蛛发布更多代码吗?
  • 由于某种原因,当我输入scrapy shell 后跟url 时,&gt;&gt;&gt; 永远不会出现,当我在空白行输入view(response) 时,shell 崩溃。

标签: python web-scraping scrapy


【解决方案1】:

感谢大家的帮助。

根据我在单击控制台输出提供的链接时看到的结果,输出不是预期的,因为蜘蛛正在从亚马逊获取 证明你不是机器人页面作为它的回应。

我通过使用self.logger.info(response.body) 查看我的蜘蛛收到的响应发现了这一点

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-08
    • 2022-01-17
    • 1970-01-01
    • 1970-01-01
    • 2018-05-18
    • 1970-01-01
    相关资源
    最近更新 更多