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

Python Selenium爬取数据插入SQLite3仅保存部分记录问题求助

问题原因
  • 循环内使用单个变量存储球队名,每次迭代都会覆盖上一次的结果,循环结束后仅保留最后一条爬取到的球队名
  • 爬取完SerieA后提前关闭浏览器,会导致后续SerieB爬取失败,且driver.close写法错误,缺少调用括号
  • 插入数据库时仅传入了最后两个球队名作为参数,自然只能插入2条记录
修复后可直接使用的代码
# 请保留你原有的driver初始化逻辑,比如driver = webdriver.Chrome() 这类代码
import time
import sqlite3
from selenium.webdriver.common.by import By

# 初始化列表存储所有爬取到的球队名称
serie_a_teams = []
serie_b_teams = []

# SCRAPING
# SerieA
driver.minimize_window()
driver.get("替换为你实际爬取SerieA的URL")
time.sleep(20)

for serie_a_item in driver.find_elements(By.CSS_SELECTOR, "a[href^='/squadra'][class^='tableCellParticipant__name']"):
    team_name = serie_a_item.text
    print(team_name)
    serie_a_teams.append(team_name)

# SerieB
driver.minimize_window()     
driver.get("替换为你实际爬取SerieB的URL")
time.sleep(15)

for serie_b_item in driver.find_elements(By.CSS_SELECTOR, "a[href^='/squadra'][class^='tableCellParticipant__name']"):
    team_name = serie_b_item.text
    print(team_name)
    serie_b_teams.append(team_name)

# 所有爬取完成后再关闭浏览器
driver.quit()

# INSERT IN DATABASE
con = sqlite3.connect('DATABASE.db')
cursor = con.cursor()

# 合并两个联赛的球队,转换为executemany要求的元组格式
insert_values = [(team,) for team in serie_a_teams + serie_b_teams]

sqlite_insert_query = 'INSERT INTO Squadre_Campionato (Nome_Squadra) VALUES (?);'
cursor.executemany(sqlite_insert_query, insert_values)
con.commit()

print("Record inserted successfully ", cursor.rowcount)
cursor.close()
con.close()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 13:27:04