爬虫 定时任务
环境
python3.6
爬虫文件
-
问题1: 输出汉字会报错
# 首行加这段代码 sys.stdout = codecs.getwriter("utf-8")(sys.stdout.detach()) -
问题2: 读取json文件
with open("/root/work/vivo/static/all", "rb") as f: b = json.loads(f.read())直接执行py文件的时候,读取模式都可以
但是执行定时任务的时候,必须rb!rb!rb!
-
问题3: urllib返回值
# 写法1 def get_content(): response = urllib.request.urlopen(req, context=ssl.SSLContext(ssl.PROTOCOL_SSLv23)) content = json.loads(response.read().decode("utf-8")) return content # 写法2 def get_content(): response = urllib.request.urlopen(req, context=ssl.SSLContext(ssl.PROTOCOL_SSLv23)) return json.loads(response.read().decode("utf-8"))直接执行py文件的时候,两种写法都可以
执行定时任务的时候第二种写法不对,一直报返回值为空
编写shell脚本
cd '/root/work/vivo' $0 || exit 1
/root/software/anaconda3/envs/spider/bin/python3.6 fuck.py >> vivo_crawler.log 2>&1
注释:
cd ‘/root/work/vivo’: 进入到文件夹
/root/software/anaconda3/envs/spider/bin/python3.6: python解释器的位置
fuck.py: 要执行的文件
‘>>’: 重定向 将fuck.py的输出内容,写到后面的文件中
vivo_crawler.log: 接收fuck.py执行过程中的输出内容
给shell脚本增加执行权限
sudo chmod +x vivo_crawler.sh

本文介绍了在Python3.6环境下,如何设置爬虫的定时任务。在执行过程中遇到了汉字输出错误、读取JSON文件模式不正确以及urllib返回值问题。通过编写shell脚本和设置cronjob来解决定时执行问题,同时分享了在mac和Ubuntu系统中使用crontab的注意事项。
936

被折叠的 条评论
为什么被折叠?



