scrapyd-在单独的进程之间共享内存?

问题描述

我通过在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 (将#修改为@)