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
相关产品推荐
相关产品推荐

