【发布时间】: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&nodeId=508088">Conditions of Use</a>',
u'<a href="https://www.amazon.com/gp/help/customer/display.html/ref=footer_privacy?ie=UTF8&nodeId=468496">Privacy Policy</a>']
这似乎与该网站完全不匹配。然而控制台输出肯定告诉我这是正在被抓取的链接。我特别困惑,因为早些时候我的代码按预期工作,但只有一次,从那时起它没有以任何有意义的方式改变。任何帮助将不胜感激。提前致谢。
【问题讨论】:
-
你在
scrapy shell中测试过这个吗?因为您的第一个 XPath 非常适合我。可能是亚马逊检测到你在做什么,他们正在阻止你。 -
我怎么知道是不是这样?
-
打开
scrapy shell中的URL,然后运行view(response)在浏览器中查看响应。也许有消息。 -
另一方面,也许您所做的一个小改动实际上具有这种效果。你能从你的蜘蛛发布更多代码吗?
-
由于某种原因,当我输入
scrapy shell后跟url 时,>>>永远不会出现,当我在空白行输入view(response)时,shell 崩溃。
标签: python web-scraping scrapy