You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

已完成网页爬虫,如何每5分钟将数据带时间戳存入SQLite?

实现步骤

1. 整合SQLite数据库操作

Python自带sqlite3库,无需额外安装。直接在你的爬虫代码中添加数据库连接、表创建、数据插入逻辑:

import requests
from bs4 import BeautifulSoup
import sqlite3
from datetime import datetime

# 爬虫部分
URL = "http://ludvikasegel.com/wx/cloudbase.asp"
page = requests.get(URL)
soup = BeautifulSoup(page.content, "html.parser")
molnbas = soup.find_all("div", class_="cloudbase")
cloud_data = molnbas[0].text.strip()
current_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S")  # 格式化时间戳

# 数据库操作部分
# 连接数据库(不存在则自动创建)
conn = sqlite3.connect("cloudbase_data.db")
cursor = conn.cursor()

# 创建数据表(首次运行自动创建,重复执行无影响)
cursor.execute('''
CREATE TABLE IF NOT EXISTS cloud_records (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    cloudbase TEXT NOT NULL,
    record_time TEXT NOT NULL
)
''')

# 插入数据
cursor.execute("INSERT INTO cloud_records (cloudbase, record_time) VALUES (?, ?)", (cloud_data, current_time))

# 提交并关闭连接
conn.commit()
conn.close()

print(f"已保存数据: {cloud_data},时间: {current_time}")

2. 实现每5分钟定时执行

用schedule库实现定时任务,先安装依赖:

pip install schedule

修改代码加入定时逻辑,同时增加异常处理避免爬虫失败导致程序中断:

import requests
from bs4 import BeautifulSoup
import sqlite3
from datetime import datetime
import schedule
import time

def crawl_and_save():
    # 爬虫部分
    URL = "http://ludvikasegel.com/wx/cloudbase.asp"
    try:
        page = requests.get(URL, timeout=10)
        page.raise_for_status()  # 捕获HTTP请求错误
        soup = BeautifulSoup(page.content, "html.parser")
        molnbas = soup.find_all("div", class_="cloudbase")
        if molnbas:
            cloud_data = molnbas[0].text.strip()
            current_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S")

            # 数据库操作
            conn = sqlite3.connect("cloudbase_data.db")
            cursor = conn.cursor()
            cursor.execute('''
            CREATE TABLE IF NOT EXISTS cloud_records (
                id INTEGER PRIMARY KEY AUTOINCREMENT,
                cloudbase TEXT NOT NULL,
                record_time TEXT NOT NULL
            )
            ''')
            cursor.execute("INSERT INTO cloud_records (cloudbase, record_time) VALUES (?, ?)", (cloud_data, current_time))
            conn.commit()
            conn.close()
            print(f"已保存数据: {cloud_data},时间: {current_time}")
        else:
            print("未找到目标数据")
    except Exception as e:
        print(f"执行出错: {str(e)}")

# 设置每5分钟执行一次
schedule.every(5).minutes.do(crawl_and_save)

# 启动定时任务循环
print("定时任务已启动,每5分钟执行一次...")
while True:
    schedule.run_pending()
    time.sleep(1)

3. 验证数据是否存入

可以用sqlite3命令行打开数据库文件,执行查询语句验证:

SELECT * FROM cloud_records;

或者在Python中添加以下代码快速查看:

conn = sqlite3.connect("cloudbase_data.db")
cursor = conn.cursor()
cursor.execute("SELECT * FROM cloud_records")
rows = cursor.fetchall()
for row in rows:
    print(row)
conn.close()

内容的提问来源于stack exchange,提问作者Armond

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 23:27:39