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

如何用XPath从Requests响应中提取表格内容?附封装库代码示例

嘿,我来帮你搞定用XPath从Requests响应里提取表格内容的事儿!结合你已经写的代码,我们可以分几步来实现:

第一步:先完成请求并解析HTML

首先你已经导入了需要的库,先把请求发出去,拿到响应后用lxml解析成可操作的HTML树:

import requests
from lxml.html import fromstring

URL = "https://test"
COOKIES = {"test": "AAAAAAAAAAAAA"}
HEADERS = {
    "Connection": "close",
    "Upgrade-Insecure-Requests": "1",
    "User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.89 Safari/537.36",
    "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8",
    # 把你的Headers补全在这里
}

# 发起GET请求
response = requests.get(URL, cookies=COOKIES, headers=HEADERS)
# 解析响应文本为lxml的HTML元素树
html_tree = fromstring(response.text)

第二步:用XPath定位表格并提取内容

根据页面里表格的结构,分两种常见情况来处理:

情况1:提取指定的单个表格(比如通过ID/class定位)

如果目标表格有明确的id或class属性,用XPath精准定位会更高效。比如表格是<table id="data-table">:

# 定位目标表格(取第一个匹配的结果,确保不会拿到多个表格)
target_table = html_tree.xpath('//table[@id="data-table"]')[0]

# 提取表格里的所有行(tr标签)
table_rows = target_table.xpath('.//tr')

# 遍历每行,提取单元格内容
extracted_data = []
for row in table_rows:
    # 提取每行的所有单元格(包括表头th和内容td)
    cells = row.xpath('.//td | .//th')
    # 用text_content()获取单元格内的所有文本,strip()去掉多余空格换行
    row_content = [cell.text_content().strip() for cell in cells]
    extracted_data.append(row_content)

# 打印提取到的表格内容
for row in extracted_data:
    print(row)

情况2:提取页面中所有表格

如果需要抓取页面里的所有表格,直接遍历所有table节点即可:

# 获取页面中所有表格
all_tables = html_tree.xpath('//table')

for table_index, table in enumerate(all_tables, start=1):
    print(f"=== 第 {table_index} 个表格 ===")
    rows = table.xpath('.//tr')
    table_data = []
    for row in rows:
        cells = row.xpath('.//td | .//th')
        row_data = [cell.text_content().strip() for cell in cells]
        table_data.append(row_data)
    # 输出当前表格内容
    for row in table_data:
        print(row)

一些实用小提示

  • 用text_content()而不是.text:前者会提取元素及其子元素的所有文本,避免因为文本在嵌套标签里拿不到内容的问题
  • 处理编码问题:如果响应文本乱码,记得先设置编码,比如response.encoding = 'utf-8'再解析
  • 处理合并单元格:如果表格有colspan/rowspan,需要额外逻辑处理(比如根据属性值复制内容),不过一般简单表格不需要这步
  • 调试XPath:可以在浏览器开发者工具里先测试你的XPath表达式,确认能定位到目标元素再写到代码里

这样应该就能顺利提取表格内容啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:39:39