含有大量爬虫的scrapy项目部署到Linux服务器并设置定时启动

前言
当scrapy爬虫项目中含有大量爬虫时(几百甚至更多),我们使用网上所介绍的scrapy同时启动多个爬虫方法会造成因端口不足而使爬虫运行失败。所以当我们的项目中含有大量爬虫时,可以考虑逐个运行爬虫,这样虽然运行时间长了一些但是可以令所有的爬虫都能运行。

一、配置环境
安装爬虫所需要的一些库,这里不再详述。我们主要讲述爬虫的部署以及如何让爬虫在服务器上定时自动运行。

二、编写爬虫运行程序
在spiders文件夹的同级下创建一个新的py文件,命名为run.py,然后编写这个文件,代码如下:
 

#-*- coding:utf8 -*-
import os
import re
import time
import subprocess

for filename in os.listdir(r'/home/Spidernet/Spider/peoplenet/peoplenet/spiders'):
    file_path = os.path.join(r'/home/Spidernet/Spider/peoplenet/peoplenet/spiders',filename)
    if os.path.splitext(file_path)[1] == '.py' and filename != 'run.py' and filename != '__init__.py':
        temp = ['scrapy','crawl']
        ru1 = re.compile(r'(.*).py')
        spiderName = ru1.search(filename).group(1)
        print(spiderName)
        temp.append(spiderName)
        subprocess.run(temp)
        #    subprocess.call("scrapy crawl "+spiderName)
        time.sleep(1)
Ttime = time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))
print(Ttime,'爬虫运行完毕!')

这种方法是通过系统的cmd运行爬虫命令,官方建议调用cmd命令使用subprocess.run方法,subprocess.run() Python 3.5中新增的函数。执行指定的命令,等待命令执行完成后返回一个包含执行结果的CompletedProcess类的实例,之前的版本可以使用subprocess.call方法。这样系统就会逐个执行爬虫运行命令来运行爬虫,最后通过输出爬虫运行完的时间来判断爬虫何时运行完毕。

三、编写执行run.py的脚本文件
我们在其它文件夹下新建一个shell文件夹来存放执行脚本

å¨è¿éæå¥å¾çæè¿°

进入到shell文件夹,新建一个myshell.sh的脚本文件,代码如下
 

#!/bin/bash
source ~/.virtualenvs/h1/bin/activate
cd /home/Spidernet/Spider/peoplenet/peoplenet
python3 run.py

上面的代码中首先进入到scrapy运行的虚拟环境h1中,然后cd到run.py的目录,执行python3 run.py命令。通过./myshell.sh来运行这个脚本文件。

å¨è¿éæå¥å¾çæè¿°

四、设置定时启动脚本文件
通过上面的设置,我们只要运行myshell.sh脚本文件即可实现逐个执行爬虫命令,最后再用定时命令让myshell.sh文件定时执行就可以了。
首先输入命令: export EDITOR=vim
这样可以通过vim编辑定时命令;
然后输入命令:crontab -e编写定时任务
å¨è¿éæå¥å¾çæè¿°

第1列的30表示分钟,设置范围为0~59;
第2列的16表示小时,设置范围为0~23;
第3列表示日,设置范围为1~31;

添加上图所示的命令,表示每天16:30分执行myshell.sh文件,并把输出的结果保存在spider.log文件中作为日志文件。

å¨è¿éæå¥å¾çæè¿°

这就是每天运行完爬虫后生成的日志文件,可以判断何时运行完毕。

来源:https://blog.csdn.net/WNxiaoning1/article/details/86891235

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值