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

Selenium循环抓取网页表格丢失首行及最后一列问题求助

问题原因分析
  • 最后一列(净投放(亿))缺失:列遍历用了range(1,c),Python的range是左闭右开区间,只会生成1到c-1的整数,刚好跳过了索引为c的最后一列,需要调整为range(1, c+1)。
  • 首行(2021-11对应行)缺失:你取行数据时用了全局路径//tr["+str(i)+"],会把表头thead里的tr也算入索引统计,第一个数据行的全局tr索引不是1而是2,和你统计的tbody下的tr索引错位。同时行遍历用了range(1,r),同样因为左闭右开规则漏掉了索引为r的最后一行,需要调整为range(1, r+1),同时限定路径为tbody下的tr,避免索引错位。
  • 额外逻辑问题:row数组初始化和element追加操作放在了行循环外部,会导致所有行的数据都堆叠到同一个数组中,无法按行分组。
修正后代码
from selenium import webdriver

driver = webdriver.Firefox(executable_path = '/usr/local/bin/geckodriver')
driver.get('http://www.chinamoney.com.cn/chinese/hb/')

rws = driver.find_elements_by_xpath("//table/tbody/tr")
r = len(rws)

cols = driver.find_elements_by_xpath("//thead/tr/td")
c = len(cols)

element = []
for i in range(1, r+1):
    row = []
    for j in range(1, c+1):
        # 限定在tbody下查找,避免索引错位
        d=driver.find_element_by_xpath("//table/tbody/tr["+str(i)+"]/td["+str(j)+"]").text
        row.append(d)
    element.append(row)
driver.close()

print(element)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 07:06:08