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

Python Selenium如何抓取网站指定数值并输出保存到txt文件

问题原因

你原有代码存在两处核心错误:

  • find_elements_by_class_name方法仅支持传入单个CSS类名,你传入的Animals Placed是标题的文本内容,并非元素的类属性值,完全无法匹配到对应元素
  • 你需要提取的数值存放在class="number"的<span>标签中,不是标题对应的<p>标签里

修正代码

直接批量提取所有6个数值(适配Selenium 3.x版本)

# 提取所有带数值的span元素
number_elements = driver.find_elements_by_class_name('number')
# 提取数值文本并去除多余空白
result_list = [elem.text.strip() for elem in number_elements]

# 打印验证结果
for value in result_list:
    print(value)

# 写入txt文件
with open('tulsaspca_stats.txt', 'w', encoding='utf-8') as f:
    f.write('\n'.join(result_list))

适配Selenium 4.x版本的写法

Selenium 4.0及以上版本已弃用find_elements_by_class_name这类直接定位方法,需要调整为以下写法:

from selenium.webdriver.common.by import By

# 提取所有带数值的span元素
number_elements = driver.find_elements(By.CLASS_NAME, 'number')
result_list = [elem.text.strip() for elem in number_elements]

# 写入txt文件
with open('tulsaspca_stats.txt', 'w', encoding='utf-8') as f:
    f.write('\n'.join(result_list))

按标题匹配取值(防止页面顺序变动出错)

如果需要确保对应标题的数值准确,不受页面元素顺序调整影响,可以用父子节点关联匹配:

from selenium.webdriver.common.by import By

stats = {}
# 先匹配所有标题元素
title_elements = driver.find_elements(By.CLASS_NAME, 'title')
for title_elem in title_elements:
    title = title_elem.text.strip()
    # 关联匹配对应标题的数值元素
    number_elem = title_elem.find_element(By.XPATH, './preceding-sibling::div/span[@class="number"]')
    stats[title] = number_elem.text.strip()

# 可单独取指定标题的数值,例:
print(stats['Animals Placed'])

# 按需求顺序取值写入txt即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 23:36:04