问题描述
我通过在scrapyd中发布新的start_urls
同时运行多个蜘蛛,它创建了单独的进程。
如何获取内存中所有已爬网的项目? 所有的蜘蛛什么时候完成工作?我需要收集项目并将其写入单个.csv文件中。
这是我的蜘蛛:
class MySpider(scrapy.Spider):
name = 'myspider'
def __init__(self,*args,**kwargs):
super(MySpider,self).__init__(*args,**kwargs)
self.domain = kwargs.get('domain','')
self.start_urls = kwargs.get('start_urls','')
def start_requests(self):
if self.domain:
yield scrapy.Request(self.domain + '/products.json?limit=1',self.batching)
else:
for url in json.loads(self.start_urls):
yield scrapy.Request(url,self.parse)
def batching(self,response):
data = json.loads(response.text)
total = data['total_page']
batch_size = 3
page_number = math.ceil(total / 50)
lst = list(range(1,page_number + 1))
for j in range(0,len(lst),batch_size):
data = [
("project","properties"),("spider",self.name),]
start_urls = [self.domain + '/products.json?limit=100&page=%d' % i for i in
lst[j: j + batch_size]]
json_urls = json.dumps(start_urls)
data.append(("start_urls",json_urls))
treq.post("http://localhost:6800/schedule.json",data=data,timeout=5,persistent=False)
def parse(self,response):
#parse response
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)