# 通过脚本同时运行几个spider
目录结构:

1.在命令行能通过的情况下创建两个spider如
TestSpider
Test2Spider

2.在items.py的同级目录创建run.py文件,有三种方式,任选其一,其代码如下:

方式一: 通过CrawlerProcess同时运行几个spider

run_by_CrawlerProcess.py源代码:

 # 通过CrawlerProcess同时运行几个spider
from scrapy.crawler import CrawlerProcess
# 导入获取项目配置的模块
from scrapy.utils.project import get_project_settings
# 导入蜘蛛模块(即自己创建的spider)
from spiders.test import TestSpider
from spiders.test2 import Test2Spider # get_project_settings() 必须得有,不然"HTTP status code is not handled or not allowed"
process = CrawlerProcess(get_project_settings())
process.crawl(TestSpider) # 注意引入
#process.crawl(Test2Spider) # 注意引入
process.start()

方式二:通过CrawlerRunner同时运行几个spider

run_by_CrawlerRunner.py源代码:

 # 通过CrawlerRunner同时运行几个spider
from twisted.internet import reactor
from scrapy.crawler import CrawlerRunner
from scrapy.utils.log import configure_logging
# 导入获取项目配置的模块
from scrapy.utils.project import get_project_settings
# 导入蜘蛛模块(即自己创建的spider)
from spiders.test import TestSpider
from spiders.test2 import Test2Spider configure_logging()
# get_project_settings() 必须得有,不然"HTTP status code is not handled or not allowed"
runner = CrawlerRunner(get_project_settings())
runner.crawl(TestSpider)
#runner.crawl(Test2Spider)
d = runner.join()
d.addBoth(lambda _: reactor.stop())
reactor.run() # the script will block here until all crawling jobs are finished

方式三:通过CrawlerRunner和链接(chaining) deferred来线性运行来同时运行几个spider

run_by_CrawlerRunner_and_Deferred.py源代码:

 # 通过CrawlerRunner和链接(chaining) deferred来线性运行来同时运行几个spider
from twisted.internet import reactor, defer
from scrapy.crawler import CrawlerRunner
from scrapy.utils.log import configure_logging
# 导入获取项目配置的模块
from scrapy.utils.project import get_project_settings
# 导入蜘蛛模块(即自己创建的spider)
from spiders.test import TestSpider
from spiders.test2 import Test2Spider configure_logging()
# get_project_settings() 必须得有,不然"HTTP status code is not handled or not allowed"
runner = CrawlerRunner(get_project_settings()) @defer.inlineCallbacks
def crawl():
yield runner.crawl(TestSpider)
#yield runner.crawl(Test2Spider)
reactor.stop() crawl()
reactor.run() # the script will block here until the last crawl call is finished

3.修改两个spider文件引入items,和外部类的如(HeadersHelper.py)的引入模式(以run.py所在目录为中心)
原导入模式:

from ..items import ScrapydoubanmovieItem
from .HeadersHelper import HeadersHelper

注释:这种导入能够在命令行scrapy crawl Test正常运行

修改为:

from items import ScrapydoubanmovieItem
from .HeadersHelper import HeadersHelper

注释:修改后这种导入在命令行scrapy crawl Test会报错,但通过运行run.py文件,能够同时运行两个spider

4.按照运行python文件的方式运行run.py,可以得到结果

通过脚本同时运行几个spider的更多相关文章

  1. Chrome扩展开发之二——Chrome扩展中脚本的运行机制和通信方式

    目录: 0.Chrome扩展开发(Gmail附件管理助手)系列之〇——概述 1.Chrome扩展开发之一——Chrome扩展的文件结构 2.Chrome扩展开发之二——Chrome扩展中脚本的运行机制 ...

  2. Linux服务器Jboss运行环境搭建步骤和开机自动启动脚本编写运行

    Jboss运行环境:Linux+Jdk+Jboss+jsp系统 Jboss软件说明:类似于Tomcat,就是一个跑Jsp系统的环境,他的站点路径跟Tomcat类似,Tomcat存放站点文件到webap ...

  3. windows下perl的安装和脚本的运行

    参考 1.windows下perl的安装和脚本的运行: 2.fddb测试fddb的评估方法: 3.gunplot5.2.4-download: 完

  4. 【Linux学习】python脚本直接运行与nohup运行结果不同

    之前遇到问题,在云主机上运行python脚本直接运行与nohup运行结果不同,甚至nohup根本运行不出来. 后来参考下别人的博客,终于知道问题了. nohup 使用的python版本问题. 而且no ...

  5. IDEA中编写脚本并运行shell脚本

    IDEA中编写脚本并运行shell脚本     来自 <https://blog.csdn.net/u012443641/article/details/81295999>

  6. LoadRunner11脚本关联+运行负载+分析结果

    一.脚本创建关联和插入检查点 脚本录制完成后,首先需运行脚本回放,验证是否可回放成功,然后找出各事务请求中的关联点! 如本例子中,录制的场景为:打开综合窗口收件-->查询事项-->窗口登记 ...

  7. python脚本后台运行

    问题描述: 环境: CentOS6.4 一个用python写的监控脚本test1.py,用while True方式一直运行,在ssh远程(使用putty终端)时通过以下命令启动脚本: python t ...

  8. 由于Windows和Linux行尾标识引起脚本无法运行的解决

    在所有的操作系统中,文本文件的结束或者换行都是有行尾符来标识的,C语言中经常使用\n作为换行,\r作为跳格TAB:实际上在计算机还没有真正出现之前,有种电传打字机的设备,每秒钟可以打印10个字符,但是 ...

  9. linux脚本后台运行

    一般情况下,linux运行脚本是随着终端的关闭而关闭的,那么怎么让脚本能够在后台运行并且不随终端关闭而关闭呢? 这时用到的是nohup命令 格式: nohup 脚本路径 & 例: nohup ...

随机推荐

  1. python 安装 pyinstall 编译exe文件

    $ pip install future 安装PyInstaller之前需确认首先安装了pywin32 下载地址:http://nchc.dl.sourceforge.net/project/pywi ...

  2. 任务调度Cron表达式及Quartz代码详解

    在线Cron表达式生成器 http://cron.qqe2.com/ cron表达式详解 http://www.cnblogs.com/linjiqin/archive/2013/07/08/3178 ...

  3. log4cxx在linux下的编译使用

    最近在linux下使用log4cxx库,按照其官方文档提供的方法来进行编译,不能成功,又利用google搜索了好几个中文博客上讲述在linux下编译使用log4cxx库的方法,依然不能成功,在这里我奉 ...

  4. 可能是最通俗易懂的 Java 位操作运算讲解

    https://blog.csdn.net/briblue/article/details/70296326

  5. twemproxy源码分析2——守护进程的创建

    twemproxy源码中关于守护进程的创建实现得比较标准,先贴出代码来,然后结合一些资料来分析和列举一些实现守护进程的常用方法,不过不得不说twemproxy的实现确实是不错的,注释都写在了代码中,直 ...

  6. redis命令_ZREVRANGEBYSCORE

    ZREVRANGEBYSCORE key max min [WITHSCORES] [LIMIT offset count] 返回有序集 key 中, score 值介于 max 和 min 之间(默 ...

  7. tomcat web 修改logo

    第一种: 打开tomcat目录,进入 D:\tomcat\apache-tomcat-7.0.50-1\webapps\ROOT 找到favicon.ico图标 然后替换成自己的 第二种: 由于tom ...

  8. VirtualBox错误ID: PAEmode解决

    今天在导入virtualbox的虚拟机ubuntu系统时,报错,无法打开虚拟机 报错内容如下: 错误 ID: PAEmode 严重: 致命错误 The guest is trying to switc ...

  9. AJAX防止多次请求

    ajax诠释 ajax 的全称是Asynchronous JavaScript and XML,其中,Asynchronous 是异步的意思,它有别于传统web开发中采用的同步的方式. ajax所包含 ...

  10. 关于如何防止PHP漏洞?

    踏入编程圈一年不到,之前写的文章一直放在个人博客上,以后我写的或整理的好的教程一定到园子里分享,只是园子里PHPer好像不怎么活跃,希望同行多多交流.这是我之前整理的一篇PHP漏洞文章! 漏洞无非这么 ...