《Python笔记》Scrapy爬虫(3)服务部署及定时调度

这篇记录一下如何部署scrapy 项目

这里是在入门进阶(2)的代码基础,把 scrapy 项目部署到服务器上,并执行启动命令

一、 通过Xftp将项目丢到服务器的 /home 目录下

 

二、 执行项目

1. 非调度执行

先在服务器的 /home 路径下创建两个文件夹 crawlerlogs

执行爬虫(scrapy crawl test),并打印日志(/home/logs/crawlerDemo.log),代码如下:

cd /home/crawler/crawlerDemo && nohup scrapy crawl test > /home/logs/crawlerDemo.log 2>&1 &

2. 调度执行

同样的,先在服务器的 /home 路径下创建两个文件夹 crawlerlogs

在入门进阶(2)的代码基础,新建一个调度py文件,

调度py文件需要建在这一层级中,否则会出现意想不到的惊喜 ~ ~ ~

import logging
import schedule
import subprocess
import os

# 需要调度的爬虫的name
spider_name = "test"

# 创建日志组件
logger = logging.getLogger("consume_redis")
logger.setLevel(logging.DEBUG)
ch = logging.StreamHandler()
ch.setLevel(logging.DEBUG)
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
ch.setFormatter(formatter)
logger.addHandler(ch)

def job():
    child = subprocess.Popen(["pgrep", "-f", spider_name], stdout=subprocess.PIPE, shell=False)
    logger.info(child)
    pid = child.communicate()[0].decode('utf-8')
    logger.info(pid)
    if not pid:
        shell = "cd /home/crawler && nohup scrapy crawl " + spider_name + " >/home/logs/" + spider_name + ".log 2>&1 &"
        os.system(shell)
        logger.info("爬虫启动成功")
    else:
        logger.info("该爬虫已在服务器运行!")

# 首次执行方法
job()

# 定时调度器(分钟)
#schedule.every(10).minutes.do(job)
schedule.every().day.at("08:00").do(job)

while True:
    schedule.run_pending()

使用了调度器以后,所以在Linux中执行项目的命令也会有所改变

执行爬虫,并打印日志,代码如下:

cd /home/crawler/crawlerDemo/crawlerDemo && nohup python demoTaskSpider.py > /home/logs/demoTaskSpider.log 2>&1 &

日志路径(爬虫输出的日志文件名以 爬虫name 命名)

调度器日志:/home/logs/demoTaskSpider.log

爬虫日志:/home/logs/爬虫名.log

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

学弟不想努力了

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值