我是网络抓取,Python和Scrapy的新手。如果我的理解存在一些根本性的缺陷,请原谅我。我来自JAVA / R背景。我正在努力刮取www.amazon.in的书籍细节。我在使用chrome的XPATH finder之后构建了所需的XPATH,但是当我在Scrapy shell中尝试相同的XPATH查询时,会显示不同形式的URL。
例如,对于XPATH查找器中的以下XPATH查询//ul[@id='ref_976390031']/li[23]/a[@href]/@href
,我得到了
www.amazon.in/s/ref=lp_976389031_nr_n_21?fst=as%3Aoff&rh=n%3A976389031%2Cn%3A%21976390031%2Cn%3A1318203031&bbn=976390031&ie=UTF8&qid=1418660681&rnid=976390031
但是当我在scrapy shell的响应变量上尝试response.xpath("//ul[@id='ref_976390031']/li[23]/a[@href]/@href").extract()
我得到了
http://www.amazon.in/b?ie=UTF8&node=1318203031
更有趣的是,键入到浏览器中的废弃链接落在不同的页面而不是其应该着陆的页面(相同的行为,即在报废时也会出现在不同的页面中)
我观察到的另一件事,虽然报废的链接报废但与浏览器呈现的链接不同,大多数链接正确定向/重定向,而有些像这样的链接。
这种行为使我的剪贴板在某些链接上成功抓取,一些链接根本没有报废。
对此行为的任何帮助/解释将不胜感激。提前谢谢。
答案 0 :(得分:0)
Kyle K,warvariuc是对的,该网站为不同的用户代理呈现不同的URL。
在settings.py
中添加以下参数修复了问题
USER_AGENT = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/22.0.1207.1 Safari/537.1"
感谢大家花时间回复。