python作为程序猿们常用的爬虫语言,那么定时任务肯定得会了,那么python有哪些方法可以实现定时任务呢?在Python中实现定时任务采集网站,可以使用多种方法和库。这里我们将介绍几种常见的方法。
schedule
库schedule
是一个轻量级的调度库,适合简单的定时任务需求。
首先,安装schedule
和requests
库(用于发送HTTP请求):
bash深色版本pip install schedule requests beautifulsoup4
然后,编写如下Python脚本:
python深色版本import requests
from bs4 import BeautifulSoup
import schedule
import time
# 定义要爬取的URLs
URL_NEWS = "https://www.020taijiyy.com/news/zuqiu/"
URL_HOME = "https://www.020taijiyy.com/"
def scrape_website(url):
response = requests.get(url)
if response.status_code == 200:
soup = BeautifulSoup(response.text, 'html.parser')
# 示例:获取页面标题和第一个段落
title = soup.title.string
first_paragraph = soup.find('p').text
print(f"Scraping {url}")
print(f"Title: {title}")
print(f"First Paragraph: {first_paragraph}")
print("-" * 80)
else:
print(f"Failed to retrieve {url}")
def job():
scrape_website(URL_NEWS)
scrape_website(URL_HOME)
# 每隔5分钟执行一次任务
schedule.every(5).minutes.do(job)
if __name__ == "__main__":
print("Scheduler started...")
while True:
schedule.run_pending()
time.sleep(1)
APScheduler
库APScheduler
是一个功能强大的调度库,支持多种调度方式,包括固定间隔、日期时间等。
首先,安装APScheduler
和其他依赖:
bash深色版本pip install apscheduler requests beautifulsoup4
然后,编写如下Python脚本:
python深色版本from apscheduler.schedulers.blocking import BlockingScheduler
import requests
from bs4 import BeautifulSoup
# 定义要爬取的URLs
URL_NEWS = "https://www.020taijiyy.com/news/zuqiu/"
URL_HOME = "https://020taijiyy.com/"
def scrape_website(url):
response = requests.get(url)
if response.status_code == 200:
soup = BeautifulSoup(response.text, 'html.parser')
# 示例:获取页面标题和第一个段落
title = soup.title.string
first_paragraph = soup.find('p').text
print(f"Scraping {url}")
print(f"Title: {title}")
print(f"First Paragraph: {first_paragraph}")
print("-" * 80)
else:
print(f"Failed to retrieve {url}")
def job():
scrape_website(URL_NEWS)
scrape_website(URL_HOME)
# 创建调度器
scheduler = BlockingScheduler()
# 每隔5分钟执行一次任务
scheduler.add_job(job, 'interval', minutes=5)
try:
scheduler.start()
except (KeyboardInterrupt, SystemExit):
pass
threading.Timer
如果你只需要一个非常简单的定时任务,可以使用Python标准库中的threading.Timer
来实现。
python深色版本import requests
from bs4 import BeautifulSoup
import threading
# 定义要爬取的URLs
URL_NEWS = "https://www.020taijiyy.com/news/zuqiu/"
URL_HOME = "https://www.020taijiyy.com/"
def scrape_website(url):
response = requests.get(url)
if response.status_code == 200:
soup = BeautifulSoup(response.text, 'html.parser')
# 示例:获取页面标题和第一个段落
title = soup.title.string
first_paragraph = soup.find('p').text
print(f"Scraping {url}")
print(f"Title: {title}")
print(f"First Paragraph: {first_paragraph}")
print("-" * 80)
else:
print(f"Failed to retrieve {url}")
def job():
scrape_website(URL_NEWS)
scrape_website(URL_HOME)
# 设置下一次任务的时间(例如5分钟后)
threading.Timer(300, job).start()
if __name__ == "__main__":
print("Starting timer...")
job()
以上三种方法都可以用来实现定时任务并采集指定网站的内容。每种方法都有其适用场景:
schedule
:简单易用,适合不需要复杂调度逻辑的应用。APScheduler
:功能强大,支持多种调度方式,适合需要灵活调度的任务。threading.Timer
:最基础的方法,适用于非常简单的定时任务。原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。