【发布时间】:2016-09-05 15:07:12
【问题描述】:
我使用 scrapy 来抓取这个 site。
我想把所有的子分类保存在一个数组中,然后获取对应的页面(分页)
我的第一步
def start_requests(self):
yield Request(start_urls[i], callback=self.get_sous_cat)
get_sous_cat 是一个函数,它获取站点的所有子类别,然后异步启动作业以递归探索子子类别。
def get_sous_cat(self,response):
#Put all the categgories in a array
catList = response.css('div.categoryRefinementsSection')
if (catList):
for category in catList.css('a::attr(href)').extract():
category = 'https://www.amazon.fr' + category
print category
self.arrayCategories.append(category)
yield Request(category, callback=self.get_sous_cat)
当所有相应的请求都发送完毕后,我需要调用这个终止函数:
def pagination(self,response):
for i in range(0, len(self.arrayCategories[i])):
#DO something with each sub-category
我试过了
def start_requests(self):
yield Request(start_urls[i], callback=self.get_sous_cat)
for subCat in range(0,len(self.arrayCategories)):
yield Request(self.arrayCategories[subCat], callback=self.pagination)
【问题讨论】:
-
你试过“这个”,结果如何?它与您的预期有何不同?
-
完全,你的意思是什么时候刮完?从您的代码示例中看起来像这样。您可以尝试连接到 spider_close 信号,请参阅此处的文档doc.scrapy.org/en/latest/topics/signals.html#spider-closed。你能详细解释一下你在分页程序中做了什么吗?
-
在这个链接[link]amazon.fr/s/…我们有一个17页的类别,我们有像Repas这样的子类别,我想做的是把这个页面的url +他的子类别的 url,例如 Repas 在一个数组中,并使用分页功能获得该类别的 17 页
-
@Steve 完全,我的意思是我们完成了获取所有类别的所有子类别的 url(一些子类别也有子类别)但是 Scrape 还没有完成
-
我编辑了我的问题并添加了更多信息
标签: python-2.7 recursion web-scraping scrapy web-crawler