如何捕获网页表格指定列值并统计各状态出现次数
网页表格Status列状态统计解决方案
下面分三种常见场景给出具体实现方案,覆盖静态页面、临时快速统计、动态加载页面三种情况:
1. Python 静态页面抓取(BeautifulSoup + Pandas)
适合页面内容直接渲染在HTML中的静态表格,步骤简单易复用:
- 先安装依赖包:
pip install requests beautifulsoup4 pandas
- 示例代码:
import requests from bs4 import BeautifulSoup import pandas as pd # 替换为目标网页URL url = "你的目标网页地址" response = requests.get(url) soup = BeautifulSoup(response.text, "html.parser") # 定位表格(如果页面有多个表格,可通过id/class筛选,比如soup.find("table", id="target-table")) table = soup.find("table") # 用Pandas读取表格数据 df = pd.read_html(str(table))[0] # 提取Status列并统计(替换为实际列名,比如"Status"或"status") status_counts = df["Status"].value_counts() # 输出统计结果 print(status_counts)
2. 浏览器控制台快速统计(JavaScript)
适合临时需求,无需编写脚本,直接在浏览器开发者工具中执行:
- 打开目标网页,按F12打开开发者工具,切换到Console标签,输入以下代码(需根据表格结构调整选择器):
// 假设Status列是表格的第3列(索引从0开始,可自行调整),或者通过列名定位 const statusCells = document.querySelectorAll("table tr td:nth-child(3)"); // 按列位置定位 // 或者通过列名表头定位: // const headerIndex = Array.from(document.querySelectorAll("table th")).findIndex(th => th.textContent.trim() === "Status"); // const statusCells = document.querySelectorAll(`table tr td:nth-child(${headerIndex + 1})`); const statusStats = {}; statusCells.forEach(cell => { const status = cell.textContent.trim(); if (status) { statusStats[status] = (statusStats[status] || 0) + 1; } }); console.log("Status统计结果:", statusStats);
执行后即可在控制台看到统计结果。
3. 动态加载表格处理(Selenium + Pandas)
如果表格内容是通过JavaScript异步加载的(比如滚动加载、AJAX请求),需要用Selenium模拟浏览器渲染:
- 安装依赖:
pip install selenium pandas
- 示例代码(以Chrome为例):
from selenium import webdriver from selenium.webdriver.chrome.service import Service from webdriver_manager.chrome import ChromeDriverManager import pandas as pd # 初始化浏览器驱动 driver = webdriver.Chrome(service=Service(ChromeDriverManager().install())) driver.get("你的目标网页地址") # 等待表格加载完成(可根据实际情况调整等待时间或用显式等待) driver.implicitly_wait(10) # 获取表格元素 table = driver.find_element("tag name", "table") # 转换为HTML后用Pandas读取 df = pd.read_html(table.get_attribute("outerHTML"))[0] # 统计Status列 status_counts = df["Status"].value_counts() print(status_counts) # 关闭浏览器 driver.quit()
内容的提问来源于stack exchange,提问作者Priyanka Rani
相关产品推荐
相关产品推荐

