繁体   English   中英

为什么我用(scrapy shell response.xpath())得到一个空数组?

[英]Why am I getting an empty array with (scrapy shell response.xpath())?

我想知道为什么即使我做了response.xpath('//div').extract() ,response.xpath()在此页面中仍返回一个空数组[] 例:

$ scrapy shell https://www.amazon.cn/b/2127529051
...
>>> response.xpath('//div').extract()
[]

我可以从主页上得到一些结果,但是不能从许多其他页面上得到任何结果。

顺便说一句, 我不是在尝试爬行亚马逊之类的东西,它只是出于学习目的。

我也尝试过其他站点,但是没有遇到这个问题,所以我想知道为什么。

有任何想法吗?

谢谢

response.xpath('\\\\div').execute()

这条线是错误的。 首先,您在这里使用正斜杠而不是反斜杠。 同样execute()也不是SelectorSelectorList对象的方法(那些是由response.xpath()方法返回的值)。

试试: response.xpath("//div").extract()

除了破坏代码之外,关闭JavaScript并运行view(response)以查看您的蜘蛛正在查看的内容是一种很好的做法。 在某些情况下,您的Spider可能甚至看不到"//div[@id='name']"因为它是用javascript加载的。

  • response.xpath('\\ div')。execute()

  • 可能只有很少的原因

    1. 用户代理: scrapy shell site name -s USER_AGENT='Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36'

    2. 您的回应为空,请尝试回应。 它显示200-300,然后还好

    3. 路径错误,根据站点

这应该可以解决您的问题

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM