如何通过正则表达式匹配id筛选read_html返回的表格?
仅针对HTML表格id用正则筛选的解决方法
如果你需要用正则匹配表格的id属性(比如.+-game-basic这种模式),但pd.read_html的attrs参数不支持正则,match参数又会遍历全文文本,那么可以通过先筛选目标表格再交给pandas处理的方式解决:
步骤说明
- 先获取目标页面的HTML源码
- 用BeautifulSoup精准筛选出符合
id正则的表格 - 将筛选后的表格转为HTML字符串,再用
pd.read_html解析
完整代码示例
import pandas as pd import requests from bs4 import BeautifulSoup import re # 替换成你的目标URL url = "https://example.com/your-page" # 获取页面HTML response = requests.get(url) soup = BeautifulSoup(response.text, "html.parser") # 筛选id匹配`.+-game-basic`正则的表格 target_tables = soup.find_all("table", id=re.compile(r".+-game-basic")) # 把每个表格解析成DataFrame result_dfs = [] for table in target_tables: # 将BeautifulSoup表格对象转为HTML字符串 table_html = str(table) # 读取表格(因为是单个表格,取索引0的结果) df = pd.read_html(table_html)[0] result_dfs.append(df) # 现在result_dfs里就是所有符合id规则的表格数据
为什么这么做?
pd.read_html的attrs参数仅支持精确匹配属性值,无法直接传入正则表达式match参数是对表格内的文本内容进行匹配,不是针对HTML属性,不符合需求- 通过BeautifulSoup先筛选,能精准定位到
id符合规则的表格,再交给pandas解析,完全满足"仅针对id筛选"的需求
依赖安装
如果还没装requests和beautifulsoup4,执行以下命令安装:
pip install requests beautifulsoup4
内容的提问来源于stack exchange,提问作者Borut Flis
相关产品推荐
相关产品推荐

