ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python – 使用scrapyd一次运行多个scrapy蜘蛛

2019-09-26 16:54:54  阅读:213  来源: 互联网

标签:scrapyd python scrapy screen-scraping


我正在使用scrapy进行一个项目,我想要抓取一些网站 – 可能是数百个 – 我必须为每个网站编写一个特定的蜘蛛.我可以使用以下方法在部署到scrapyd的项目中安排一个蜘蛛:

curl http://localhost:6800/schedule.json -d project=myproject -d spider=spider2

但是如何一次安排项目中的所有蜘蛛呢?

所有帮助非常感谢!

解决方法:

我一次运行200个蜘蛛的解决方案是为项目创建一个自定义命令.有关实现自定义命令的更多信息,请参见http://doc.scrapy.org/en/latest/topics/commands.html#custom-project-commands.

YOURPROJECTNAME / commands / allcrawl.py:

from scrapy.command import ScrapyCommand
import urllib
import urllib2
from scrapy import log

class AllCrawlCommand(ScrapyCommand):

    requires_project = True
    default_settings = {'LOG_ENABLED': False}

    def short_desc(self):
        return "Schedule a run for all available spiders"

    def run(self, args, opts):
        url = 'http://localhost:6800/schedule.json'
        for s in self.crawler.spiders.list():
            values = {'project' : 'YOUR_PROJECT_NAME', 'spider' : s}
            data = urllib.urlencode(values)
            req = urllib2.Request(url, data)
            response = urllib2.urlopen(req)
            log.msg(response)

确保在settings.py中包含以下内容

COMMANDS_MODULE = 'YOURPROJECTNAME.commands'

然后从命令行(在项目目录中),您只需键入

scrapy allcrawl

标签:scrapyd,python,scrapy,screen-scraping
来源: https://codeday.me/bug/20190926/1821008.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有