scrapy脚本运行测试

scrapy运行方法为命令行输入

scrapy crawl spider

当我们需要在脚本中运行时,可以这样:

from scrapy import cmdline

cmdline.execute('scrapy crawl spider'.split())

当我们一个项目里有多个爬虫时,如果使用上述方法,只会运行第一个爬虫

from scrapy import cmdline
   
cmdline.execute('scrapy crawl spider1'.split())
cmdline.execute('scrapy crawl spider2'.split())
cmdline.execute('scrapy crawl spider3'.split())

###只会运行第一个###

这时候我们需要:

import os

os.system('scrapy crawl spider1')
os.system('scrapy crawl spider2')
os.system('scrapy crawl spider3')

建议在创建爬虫项目spider时,将spider文件名称和name命名为相同,这是我们想运行所有爬虫时就可以这样:

# coding=utf-8
import os
import time

def file_name(file_dir):
    for root, dirs, files in os.walk(file_dir):
        return files 

if __name__ == '__main__':
    for item in file_name('./spiders'):
        if item[-2:]=='py':
            if item == '__init__.py':
                continue
            print('scrapy crawl {}'.format(item[:-3]))
            os.system('scrapy crawl {}'.format(item[:-3]))

也可以通过修改scrapy Command类来实现:

新建一个crawlall.py,复制scrapy Comman类并继承ScrapyCommand:

重写run()方法:

    def run(self, args, opts):
        # settings = get_project_settings()
        spider_loader = self.crawler_process.spider_loader
        for spidername in args or spider_loader.list():
            self.crawler_process.crawl(spidername, **opts.spargs)
            print('此时启动的爬虫为:%s' % spidername)
        self.crawler_process.start()

并在settings中配置:

COMMANDS_MODULE = 'website.commands'

这时,命令行输入

scrapy list

就可以看到多了一个scrapy crawlall命令

运行即可运行所有spiders

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值