我正在做一个网络应用程序,搜索每种型号鞋子的所有鞋子尺码。
例如,对于一个有鞋子列表的网站:
http://www.soccer.com/shop/footwear/?page=1&pageSize=12&query=*&facet=ads_f40502_ntk_cs%253A%2522Nike%2522
我需要进入每个链接以获取此信息。 有什么方法可以用Scrapy(或其他东西)有效地做到这一点吗?或者不可能这样做?
答案 0 :(得分:2)
这是可能的,它是Scrapy
的核心功能之一。
例如,为了抓住这个网站上的每一双鞋你会做的是:
在您的蜘蛛变量start_urls = ['http://www.soccer.com/shop/footwear/?page=1&pageSize=12&query=*&facet=ads_f40502_ntk_cs%253A%2522Nike%2522']
然后在您的parse(self, response)
上,您的代码应如下所示:
for shoe_url in response.xpath(<ENTER_THE_XPATH>).extract()
yield scrapy.Request(response.urljoin(shoe_url), callback=self.parse_shoe)
在我们在parse_shoe
循环中注册为回调的方法for
中,您应该提取所需的所有信息。
现在发生的事情是,蜘蛛开始抓取start_urls
中的URL,然后对于符合我们指定的xpath的每个url,它将使用parse_shoe
函数解析它,你可以在那里简单地提取鞋码。
您也可以在此link上关注scrapy主网站上的“关注链接”教程 - 非常清楚。
为了完整性我在该页面上为您寻找合适的xpath,它应该是'*//ul[@class="medium-3 columns product-list product-grid"]//a/@href'