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

Selenium爬虫循环生成字典追加列表仅保留末尾数据问题求解

代码问题修复方案

核心问题定位

  • 内层遍历每行数据的循环中,temp_data 被重复覆盖,且追加列表的操作放在了内层循环外,每页仅保存最后一行数据
  • 原有翻页逻辑容易出现页码匹配偏差,可能导致部分页数据遗漏

修正后代码

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
import math

# 定义核心变量
path_driver = "C:/Users/CS330584/Documents/Documentos de Defesa da Concorrência/Automatização de Processos/chromedriver.exe"
website = "https://sat.sef.sc.gov.br/tax.NET/Sat.Dva.Web/ConsultaPublicaDevedores.aspx"
value_search = 300
final_table = []

# 启动浏览器访问目标页
driver = webdriver.Chrome(path_driver)
driver.get(website)
search_max = driver.find_element_by_id("Body_Main_Main_ctl00_txtTotalDevedores")
search_max.send_keys(value_search)
btn_consult = driver.find_element_by_id("Body_Main_Main_ctl00_btnBuscar")
btn_consult.click()
driver.implicitly_wait(10)
pages = math.ceil(value_search/50)

# 遍历所有页码爬取数据
for i in range(1, pages+1):
    try:
        time.sleep(2)
        cnpjs = driver.find_elements_by_xpath("//*[@id='Body_Main_Main_grpDevedores_gridView']/tbody/tr/td[1]")
        empresas = driver.find_elements_by_xpath("//*[@id='Body_Main_Main_grpDevedores_gridView']/tbody/tr/td[2]")
        dividas = driver.find_elements_by_xpath("//*[@id='Body_Main_Main_grpDevedores_gridView']/tbody/tr/td[3]")

        # 每行数据生成后直接追加到列表
        for z in range(len(empresas)):
            temp_data = {
                'CNPJ' : cnpjs[z].text,
                'Empresas' : empresas[z].text,
                'Divida' : dividas[z].text
            }
            final_table.append(temp_data)
        # 不是最后一页就执行翻页
        if i != pages:
            driver.execute_script(f"javascript:GridView_ScrollToTop('Body_Main_Main_grpDevedores_gridView');__doPostBack('ctl00$ctl00$ctl00$Body$Main$Main$grpDevedores$gridView','Page${i+1}')")
    except Exception as ex:
        print(ex)
        break 

调整说明

  • 把final_table.append(temp_data)移到内层循环内,每生成一行数据就追加一次,避免数据被覆盖
  • 页码循环起始值改为1,翻页逻辑调整为爬完当前页后跳转下一页,逻辑更清晰避免页码匹配错误
  • 增加翻页判断,最后一页爬取完成后不需要再执行翻页操作,避免不必要的报错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 10:36:01