python定时爬虫三种方法_Python爬虫定时计划任务的几种常见方法
记得以前的Windows任务定时是可以正常使用的,今天试了下,发现不能正常使用了,任务计划总是挂起。接下来记录下Python爬虫定时任务的几种解决方法。
1.方法一、while True
首先最容易的是while true死循环挂起,不废话,直接上代码:
import os
import time
import sys
from datetime import datetime, timedelta
def One_Plan():
# 设置启动周期
Second_update_time=24* 60 * 60
# 当前时间
now_Time=datetime.now()
# 设置 任务启动时间
plan_Time=now_Time.replace(hour=9,minute=0,second=0,microsecond=0)
# 设置差值,-1 day, 21:48:53.246576,类似于这样
# time.sleep()需要传入int,所以下面使用.total_seconds()
# 主要用来计算差值,返回int,具体功能可以自行查阅相关资料
delta=plan_Time- now_Time
first_plan_Time=delta.total_seconds() % Second_update_time
print("距离第一次执行需要睡眠%d秒" % first_plan_Time)
return first_plan_Time
# while Ture代码块,挂起程序,睡眠时间结束后调用函数名进行执行
while True:
s1=One_Plan()
time.sleep(s1)
# 下面这里是自己定义的函数,想跑代码的可以换成hellow world函数或者注释掉这行测试下
exe_file(D_list)
print("正在执行首次更新程序")
个人感觉使用这种方式进行定时计划的启动如果为单个程序,并且一天执行一次的话没什么问题,如果要考虑到一天执行多个任务并且一天需要执行多次,短板一下就凸显出来了。
在工作的情况中还需要考虑到很多因素,比如爬虫程序需要在晚上12点和早上6点、9点,下午3点执行四次,并且需要同时执行4个爬虫,还需要考虑到网络是否稳定,如果程序挂掉该怎么处理等等因素。
2.方法二、Timer模块
之前说了最简单的定时启动,可以说是最简单粗暴的,人生苦短,python优雅,有没有那种很简单很简单,几行代码就可以搞定的那种?必须有的哈!简单举个例子说一下,上一个方法的末尾提到过需要考虑到其他因素,这就来了:
现在需要启动一个selenium的爬虫,使用火狐驱动+多线程,大家都明白的,现在电脑管家显示CPU占用率20%,启动selenium后不停的开启浏览器+多线程,好,没过5分钟,CPU占用率直接拉到90%+,电脑卡到飞起,定时程序虽然还在运行,但是已经类似于待机状态,是不是突然感觉到面对电脑卡死,第一反应:卧槽,这个lj电脑,怎么程序都跑不起来,我还写这么多代码,*****!!
是吧,接下来上代码,具体功能,请自行查阅相关资料深造:
from datetime import datetime
from threading import Timer
import time
# 定时任务
def task():
print(datetime.now().strftime("%Y-%m-%d %H:%M:%S"))
def timedTask():
'''
第一个参数: 延迟多长时间执行任务(秒)
第二个参数: 要执行的函数
第三个参数: 调用函数的参数(tuple)
'''
Timer(5, task, ()).start()
while True:
timedTask()
time.sleep(5)
7行代码,是不是很优雅?优不优雅的主要是代码少,不费劲对吧。
2020-06-05 14:06:39
2020-06-05 14:06:44
2020-06-05 14:06:49
2020-06-05 14:06:54
2020-06-05 14:06:59
2020-06-05 14:07:04
2020-06-05 14:07:09
2020-06-05 14:07:14
2020-06-05 14:07:19
2020-06-05 14:07:24
3. 方法三、sched模块
这次直接上模块——sched模块
代码如下:
from datetime import datetime
import sched
import time
def timedTask():
# 初始化 sched 模块的 scheduler 类,传入(time.time, time.sleep)这两个参数
schedscheduler= sched.scheduler(time.time, time.sleep)
# 增加调度任务,enter(睡眠时间,执行级别,执行函数)
scheduler.enter(5, 1, task)
# 运行任务
scheduler.run()
# 定时任务
def task():
print(datetime.now().strftime("%Y-%m-%d %H:%M:%S"))
if __name__== '__main__':
timedTask()
这个模块也很容易上手,需要注意,scheduler()只会执行一次就结束程序,可以在mian下面添加while Ture或者直接添加调度任务在timeTask中就可以,另外除了这样的写法外,还有另外一种写法,上代码:
import schedule
import time
def hellow():
print('hellow')
def Timer():
schedule.every().day.at("09:00").do(hellow)
schedule.every().day.at("18:00").do(hellow)
while True:
schedule.run_pending()
time.sleep('需要睡眠的周期')
Timer()
在这里可以看到,有day-hour-minute,定时任务非常的方便,在while True里添加需要睡眠的时间,在函数模块内添加需要执行的次数即可。
【责任编辑:庞桂玉 TEL:(010)68476606】
点赞 0
python定时爬虫三种方法_Python爬虫定时计划任务的几种常见方法相关推荐
- python爬虫十二种方法_Python爬虫的N种姿势
问题的由来 前几天,在微信公众号(Python爬虫及算法)上有个人问了笔者一个问题,如何利用爬虫来实现如下的需求,需要爬取的网页如下(网址为:https://www.wikidata.org/w/in ...
- python爬虫有多少种方式_python爬虫-----Python访问http的几种方式
爬取页面数据,我们需要访问页面,发送http请求,以下内容就是Python发送请求的几种简单方式: 会使用到的库 urllib requests 1.urlopen import urllib. ...
- python爬虫爬取图片代码_Python爬虫入门:批量爬取网上图片的两种简单实现方式——基于urllib与requests...
Python到底多强大,绝对超乎菜鸟们(当然也包括我了)的想象.近期我接触到了爬虫,被小小地震撼一下.总体的感觉就两个词--"强大"和"有趣".今天就跟大家分享 ...
- python爬虫快速下载图片_Python爬虫入门:批量爬取网上图片的两种简单实现方式——基于urllib与requests...
Python到底多强大,绝对超乎菜鸟们(当然也包括我了)的想象.近期我接触到了爬虫,被小小地震撼一下.总体的感觉就两个词--"强大"和"有趣".今天就跟大家分享 ...
- python类的方法三种访问权_Python基础33-面向对象(继承资源(属性与方法)的使用注意)...
在Python中, 继承是指子类对父类资源的使用权 1 继承-属性与方法的使用权限 1.1 测试属性与方法分别如下 公有属性/方法 受保护属性/方法 私有属性/方法 class Animal: a = ...
- python爬虫实时更新数据_Python爬虫 更新中
基础 一.环境配置 查看已安装的包 pip freeze 导出 pip freeze >requirements.txt 安装 pip install -r requirements.txt - ...
- python 爬虫 请求网页内容不一致_Python爬虫偷懒神器 — 快速构造请求头!
点击"Python编程与实战",选择"置顶公众号" 第一时间获取 Python 技术干货! 我们在写爬虫构建请求的时候,不可避免地要添加请求头( headers ...
- python爬取网页数据软件_python爬虫入门10分钟爬取一个网站
一.基础入门 1.1什么是爬虫 爬虫(spider,又网络爬虫),是指向网站/网络发起请求,获取资源后分析并提取有用数据的程序. 从技术层面来说就是 通过程序模拟浏览器请求站点的行为,把站点返回的HT ...
- python selenium 进入新标签页_python 爬虫之selenium可视化爬虫
文章目录 前文回顾 快速入门 元素定位 页面操作 等待方式 扩展程序加载 点击此处,获取海量Python学习资料! 之所以把selenium爬虫称之为可视化爬虫 主要是相较于前面所提到的几种网页解析的 ...
- python爬取豆瓣电影信息_Python爬虫入门 | 爬取豆瓣电影信息
这是一个适用于小白的Python爬虫免费教学课程,只有7节,让零基础的你初步了解爬虫,跟着课程内容能自己爬取资源.看着文章,打开电脑动手实践,平均45分钟就能学完一节,如果你愿意,今天内你就可以迈入爬 ...
最新文章
- Can‘t get attribute ‘SiLU‘ on <module ‘torch.nn.modules.activation
- 【组合数学】第一类,第二类斯特林数(Stirling),Bell数
- 用Jquery实现选项卡功能
- gddr6速率_Rambus展示18GT/s的GDDR6内存子系统:高频信号纯净度仍然非常好
- 又一个绝对棒的对话框插件fancybox v1.3.4
- 程序员怎样获取更多的劳动收入
- 针对模拟滚动条插件(jQuery.slimscroll.js)的修改
- 锐龙版和linux有什么区别,华为MateBook D 14锐龙版Linux版价格为何这么便宜
- [置顶] Python编程-混合编程(C++,python,opencv)实现
- OpenSea联合创始人Devin Finzer:NFT空间在未来几年会产生更多应用 | FBEC 2020
- 报告分享】2020年汽车行业直播研究报告.pdf(附下载链接)
- spring整合quartz框架
- 配置SQL Server 2008 R2 Reporting Services
- 使用tuned/tuned-adm工具动态调优你的CentOS系统
- 计算机二级vb题库公众号,计算机二级vb题库
- 【无标题】半导体器件特性曲线测试方法的研究
- 常用的数据库增删改查语句
- AM系列备自投保护装置在广州中山大学附属 第一(南沙)医院配电工程中的应用
- Combined Margin loss人脸识别训练笔记
- HDR视频的编码参数详解
热门文章
- js单线程和异步,promise给的承诺
- 用手机远程连接阿里云腾讯云服务器的方法
- bho是什么文件夹_BHO的完整形式是什么?
- ​【HZNUOJ】【C系列2.10】失恋 ​
- java 聊天工具源代码_简易聊天软件源码
- 【运营】Google search console
- 万王之王3d服务器正在维护,万王之王3D服务器尚未对外开放怎么回事_万王之王3D服务器进不去解决方法_玩游戏网...
- 祝老妈母亲节快乐的三段小程序
- css文件 如何使背景图片大小适应div的大小
- 电影最top,《撞车》摘录