记得以前的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爬虫定时计划任务的几种常见方法相关推荐

  1. python爬虫十二种方法_Python爬虫的N种姿势

    问题的由来 前几天,在微信公众号(Python爬虫及算法)上有个人问了笔者一个问题,如何利用爬虫来实现如下的需求,需要爬取的网页如下(网址为:https://www.wikidata.org/w/in ...

  2. python爬虫有多少种方式_python爬虫-----Python访问http的几种方式

    爬取页面数据,我们需要访问页面,发送http请求,以下内容就是Python发送请求的几种简单方式: 会使用到的库  urllib   requests 1.urlopen import urllib. ...

  3. python爬虫爬取图片代码_Python爬虫入门:批量爬取网上图片的两种简单实现方式——基于urllib与requests...

    Python到底多强大,绝对超乎菜鸟们(当然也包括我了)的想象.近期我接触到了爬虫,被小小地震撼一下.总体的感觉就两个词--"强大"和"有趣".今天就跟大家分享 ...

  4. python爬虫快速下载图片_Python爬虫入门:批量爬取网上图片的两种简单实现方式——基于urllib与requests...

    Python到底多强大,绝对超乎菜鸟们(当然也包括我了)的想象.近期我接触到了爬虫,被小小地震撼一下.总体的感觉就两个词--"强大"和"有趣".今天就跟大家分享 ...

  5. python类的方法三种访问权_Python基础33-面向对象(继承资源(属性与方法)的使用注意)...

    在Python中, 继承是指子类对父类资源的使用权 1 继承-属性与方法的使用权限 1.1 测试属性与方法分别如下 公有属性/方法 受保护属性/方法 私有属性/方法 class Animal: a = ...

  6. python爬虫实时更新数据_Python爬虫 更新中

    基础 一.环境配置 查看已安装的包 pip freeze 导出 pip freeze >requirements.txt 安装 pip install -r requirements.txt - ...

  7. python 爬虫 请求网页内容不一致_Python爬虫偷懒神器 — 快速构造请求头!

    点击"Python编程与实战",选择"置顶公众号" 第一时间获取 Python 技术干货! 我们在写爬虫构建请求的时候,不可避免地要添加请求头( headers ...

  8. python爬取网页数据软件_python爬虫入门10分钟爬取一个网站

    一.基础入门 1.1什么是爬虫 爬虫(spider,又网络爬虫),是指向网站/网络发起请求,获取资源后分析并提取有用数据的程序. 从技术层面来说就是 通过程序模拟浏览器请求站点的行为,把站点返回的HT ...

  9. python selenium 进入新标签页_python 爬虫之selenium可视化爬虫

    文章目录 前文回顾 快速入门 元素定位 页面操作 等待方式 扩展程序加载 点击此处,获取海量Python学习资料! 之所以把selenium爬虫称之为可视化爬虫 主要是相较于前面所提到的几种网页解析的 ...

  10. python爬取豆瓣电影信息_Python爬虫入门 | 爬取豆瓣电影信息

    这是一个适用于小白的Python爬虫免费教学课程,只有7节,让零基础的你初步了解爬虫,跟着课程内容能自己爬取资源.看着文章,打开电脑动手实践,平均45分钟就能学完一节,如果你愿意,今天内你就可以迈入爬 ...

最新文章

  1. Can‘t get attribute ‘SiLU‘ on <module ‘torch.nn.modules.activation
  2. 【组合数学】第一类,第二类斯特林数(Stirling),Bell数
  3. 用Jquery实现选项卡功能
  4. gddr6速率_Rambus展示18GT/s的GDDR6内存子系统:高频信号纯净度仍然非常好
  5. 又一个绝对棒的对话框插件fancybox v1.3.4
  6. 程序员怎样获取更多的劳动收入
  7. 针对模拟滚动条插件(jQuery.slimscroll.js)的修改
  8. 锐龙版和linux有什么区别,华为MateBook D 14锐龙版Linux版价格为何这么便宜
  9. [置顶]       Python编程-混合编程(C++,python,opencv)实现
  10. OpenSea联合创始人Devin Finzer:NFT空间在未来几年会产生更多应用 | FBEC 2020
  11. 报告分享】2020年汽车行业直播研究报告.pdf(附下载链接)
  12. spring整合quartz框架
  13. 配置SQL Server 2008 R2 Reporting Services
  14. 使用tuned/tuned-adm工具动态调优你的CentOS系统
  15. 计算机二级vb题库公众号,计算机二级vb题库
  16. 【无标题】半导体器件特性曲线测试方法的研究
  17. 常用的数据库增删改查语句
  18. AM系列备自投保护装置在广州中山大学附属 第一(南沙)医院配电工程中的应用
  19. Combined Margin loss人脸识别训练笔记
  20. HDR视频的编码参数详解

热门文章

  1. js单线程和异步,promise给的承诺
  2. 用手机远程连接阿里云腾讯云服务器的方法
  3. bho是什么文件夹_BHO的完整形式是什么?
  4. ​【HZNUOJ】【C系列2.10】失恋 ​
  5. java 聊天工具源代码_简易聊天软件源码
  6. 【运营】Google search console
  7. 万王之王3d服务器正在维护,万王之王3D服务器尚未对外开放怎么回事_万王之王3D服务器进不去解决方法_玩游戏网...
  8. 祝老妈母亲节快乐的三段小程序
  9. css文件 如何使背景图片大小适应div的大小
  10. 电影最top,《撞车》摘录