背景
相比于windows系统,Linux因为没有界面、命令交互便捷,更多用于生产环境的服务部署,可以高性能运行、常驻24小不间断运行。
如果你的爬虫,是一个定时的监控程序,或者一个长期的爬取任务,可以部署到Linux服务器上,实现后台自动的运行。
本文章介绍,怎样在Linux启动一个Python脚本,同时讲解怎么启动定时任务。
本文假设,你已经在Linux安装了minconda的Python环境,如果没有安装,可以查看博主的另一篇文章,或者直接咨询老师(微信:ant_learn_python)即可。
1、在Linux测试Python代码
新建一个简单的爬虫代码
# 引入requests库
import requests
# url
url = "http://www.baidu.com/"
headers = {
"User-Agent": """Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36"""
}
# 1. 获取网页内容
resp = requests.get(url, headers=headers)
resp.encoding = "utf8"
# 2. 存储结果
import datetime
cur_time = datetime.datetime.now().strftime("%Y-%M-%d-%H-%M-%S")
with open(f'baidu_page_{cur_time}.txt', "w", encoding="utf8") as f:
f.write(resp.text)
print("success")
执行代码,运行成功。
2、怎样在Shell脚本中启动服务
如果要在Shell脚本中启动服务,得先加载Conda环境。
启动任务的脚本,文件名service_start.sh:
#!/bin/bash
# 激活环境
source /root/miniconda3/etc/profile.d/conda.sh
conda activate myspider
# 启动服务
nohup python craw_baidu.py 1>logs.log 2>&1 &
停止服务的脚本,文件名service_stop.sh。
#!/bin/bash
# 杀死进程
kill -9 $(ps aux | grep 'craw_baidu' | awk '{print $2}')
如果要启动服务,那么就先cd到当前目录,然后输入如下命令即可启动。
sh service_start.sh
如果要停止服务,那么就先cd到当前目录,然后输入如下命令即可启动。
sh service_stop.sh
3、Linux怎样设置Crontab定时任务
如果在Linux开启定时任务,用Linux自带的Crontab工具可以支持实现。
crontab是一个用于在Unix操作系统上定期运行任务的命令。
用户可以创建、编辑、查看和删除这些定时任务,这些任务会按照指定的时间间隔或时间点自动执行。
通常,用户使用crontab命令来管理这些定时任务,它允许用户设置各种定时选项,如每天、每周、每月或特定小时运行任务。
要使用crontab命令来管理定时任务,可以按照以下步骤操作:
3.1 查看当前用户的crontab任务列表
crontab -l
这将列出当前用户的所有定时任务。
3.2 创建/编辑用户的crontab任务列表
crontab -e
这会打开一个文本编辑器(通常是Vi或Vim),允许您添加、编辑或删除定时任务。在编辑器中输入您想要运行的命令,并指定执行时间表达式。
3.3 crontab时间表达式格式
一个crontab时间表达式包含五个字段,分别表示分钟、小时、日期、月份和星期几。每个字段都有一些特殊符号和取值范围,如下所示:
*:匹配所有可能的值
,:逗号用于分隔多个值
-:表示范围
/:用于指定间隔
举例来说,下面的表达式表示每天早上9点运行任务:
0 9 * * *
再举个例子,每隔5分钟运行一次
*/5 * * * *
4、把爬虫程序设置为5分钟运行一次
如果要在crontab中执行代码,得写全路径。
cd /root/ && sh service_start.sh 1>logs.log 2>&1
这个命令,如果要5分钟运行一次,就在前面,加上crontab的时间声明。
*/5 * * * * cd /root/ && sh service_start.sh 1>logs.log 2>&1
然后输入命令crontab -e,进入编辑器界面。
输入字母i,进入编辑模式。
粘贴这段代码进去。
然后按键esc,输入:wq,退出编辑
使用crontab -l可以查看已经安装的列表
然后每隔5分钟,就会看到,爬虫已经生效了,每5分钟自动爬取一次。