【发布时间】:2019-06-07 09:46:20
【问题描述】:
我正在尝试制作一个从页面中抓取产品的蜘蛛,完成后,抓取目录上的下一页以及之后的下一个页面,等等。
我从一个页面(我正在抓取亚马逊)获得所有产品
rules = {
Rule(LinkExtractor(allow =(), restrict_xpaths = ('//a[contains(@class, "a-link-normal") and contains(@class,"a-text-normal")]') ),
callback = 'parse_item', follow = False)
}
而且效果很好。问题是我应该转到“下一页”并继续抓取。
我试图做的是这样的规则
rules = {
#Next Button
Rule(LinkExtractor(allow =(), restrict_xpaths = ('(//li[@class="a-normal"]/a/@href)[2]') )),
}
问题是 xPath 返回(例如,从此页面:https://www.amazon.com/s?k=mac+makeup&lo=grid&page=2&crid=2JQQNTWC87ZPV&qid=1559841911&sprefix=MAC+mak%2Caps%2C312&ref=sr_pg_2)
/s?k=mac+makeup&lo=grid&page=3&crid=2JQQNTWC87ZPV&qid=1559841947&sprefix=MAC+mak%2Caps%2C312&ref=sr_pg_3
这将是下一页的 URL,但没有 www.amazon.com。
我认为我的代码不起作用,因为我在上面的网址之前缺少 www.amazon.com。
知道如何进行这项工作吗?也许我这样做的方式不正确。
【问题讨论】:
-
相对的 URL 应该不是问题。由于这是 Amazon,我鼓励您编写一个常规蜘蛛(而不是 CrawlSpider 子类),以便能够更轻松地调试您的蜘蛛并能够处理您可能遇到的复杂场景。
标签: python-3.x web-scraping scrapy