Scrapy没有返回结果
我学习scrapy,我试图通过这个网站抓取 - http://bananarepublic.gap.com/browse/category.do?cid=1055063&sop=trueScrapy没有返回结果
但是我scrapy代码不能找到这个网站上列出的产品链接。有谁能告诉我为什么?我使用的xpath是// a [@ class =“product-card-link”]/@ href
这是因为js吗?如果是这样,我尝试使用scrapy splash但仍找不到列出的产品链接。有人可以请帮忙!
谢谢!
这些项目是通过AJAX请求生成的。当你连接到一个页面时,会执行一个JavaScript脚本,它会发出一些额外的http请求来检索一些json数据。然而,scrapy不会执行任何JavaScript,因此您需要手动查找并调用这些AJAX请求。
查看相关问题:Can scrapy be used to scrape dynamic content from websites that are using AJAX?,看看如何检查网络流量并解决此类情况。
在这种特殊情况下,你可以看到正在取得第一xhr
请求返回一个极大的JSON文件的所有项目的数据:
正如你所看到的网址需要一些参数,最重要的它需要cid
它代表类别ID和其他参数大多用于计算出货价格,所以如果你不关心那些该作品一样好:
http://bananarepublic.gap.com/resources/productSearch/v1/search?cid=1055063
避免深入研究AJAX请求的另一种方法是在处理AJAX后使用Splash(https://blog.scrapinghub.com/2015/03/02/handling-javascript-in-scrapy-with-splash/)来抓取页面。
可以更容易实现,你的xpath表达式应该可以在Splash中正常工作。但是刮板会变慢,因为它必须渲染每个页面。