Python案例:schedule定时任务
来自CloudWiki
安装模块
pip install schedule -i https://mirrors.bfsu.edu.cn/pypi/web/simple/
执行任务
任务函数无参数
import schedule import time def run(): print("I'm doing something...") schedule.every(2).seconds.do(run) # 部署每2s执行一次job()函数的任务 schedule.every(2).minutes.do(run) # 每隔十分钟执行一次任务 schedule.every().hour.do(run) # 每隔一小时执行一次任务 schedule.every().day.at("10:30").do(run) # 每天的10:30执行一次任务 schedule.every().monday.do(run) # 每周一的这个时候执行一次任务 schedule.every().tuesday.at("14:55").do(run) # 每周三13:15执行一次任务 while True: schedule.run_pending() # run_pending:运行所有可以运行的任务
任务函数有参数
import schedule import time def run(name,city): print(name+" is doing something in "+city) name="xiaona" city="jinan" schedule.every(2).seconds.do(run,name,city) # 部署每2s执行一次job()函数的任务 schedule.every(2).minutes.do(run,name,city) # 每隔十分钟执行一次任务 schedule.every().hour.do(run,name,city) # 每隔一小时执行一次任务 schedule.every().day.at("10:30").do(run,name,city) # 每天的10:30执行一次任务 schedule.every().monday.do(run,name,city) # 每周一的这个时候执行一次任务 schedule.every().tuesday.at("14:55").do(run,name,city) # 每周三13:15执行一次任务 while True: schedule.run_pending() # run_pending:运行所有可以运行的任务
案例:自动搜索百度
import schedule import time from selenium import webdriver from selenium.webdriver.common.keys import Keys def get_baidu(key_word): browser = webdriver.Chrome("C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe") browser.get(r'https://www.baidu.com') search = browser.find_element_by_id('kw') search.send_keys(key_word) search.send_keys(Keys.ENTER) if __name__=='__main__': #schedule.every(2).seconds.do(run,name,city) # 部署每2s执行一次job()函数的任务 schedule.every(1).minutes.do(get_baidu,"济南") # 每隔十分钟执行一次任务
案例:爬取微博热搜
# -*- coding: UTF-8 -*- """ @File :微博热搜榜.py @Author :叶庭云 @Date :2020/9/18 15:01 """ import schedule import pandas as pd from datetime import datetime import logging logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s: %(message)s') count = 0 def get_content(): global count # 全局变量count print('----------- 正在爬取数据 -------------') url = 'https://s.weibo.com/top/summary?cate=realtimehot&sudaref=s.weibo.com&display=0&retcode=6102' df = pd.read_html(url)[0][1:11][['序号', '关键词']] # 获取热搜前10 time_ = datetime.now().strftime("%Y/%m/%d %H:%M") # 获取当前时间 df['序号'] = df['序号'].apply(int) df['热度'] = df['关键词'].str.split(' ', expand=True)[1] df['关键词'] = df['关键词'].str.split(' ', expand=True)[0] df['时间'] = [time_] * len(df['序号']) if count == 0: df.to_csv('datas.csv', mode='a+', index=False) count += 1 else: df.to_csv('datas.csv', mode='a+', index=False, header=False) # 定时爬虫 schedule.every(1).minutes.do(get_content) while True: schedule.run_pending()