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()