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

如何用requests_session提取网页HTML表格?Python新手求助

解决思路与代码示例

1. 先搞清楚核心差异

requests-html返回的是Element对象,和Selenium的WebElement不是一回事,自然没有get_attribute()方法。要提取表格内容,直接拿元素的HTML或者文本就行。

2. 用requests-html快速转DataFrame

方法一:直接丢给pandas解析

如果表格结构规整,这招最快:

from requests_html import HTMLSession
import pandas as pd

# 初始化会话
session = HTMLSession()
# 替换成你的零件页面URL
target_url = "https://example.com/part-info"
resp = session.get(target_url)

# 用XPATH定位表格,这里假设取第一个表格,可根据实际调整XPATH
target_table = resp.html.xpath('//table')[0]
# 提取表格的HTML代码
table_html = target_table.html

# pandas自带的read_html能直接解析HTML表格
df = pd.read_html(table_html)[0]
print(df.head())

方法二:手动遍历提取(适合复杂表格)

如果表格有合并单元格或者结构混乱,手动遍历更稳妥:

from requests_html import HTMLSession
import pandas as pd

session = HTMLSession()
target_url = "https://example.com/part-info"
resp = session.get(target_url)

table = resp.html.xpath('//table')[0]
# 提取表头
headers = [th.text.strip() for th in table.xpath('.//th')]
# 提取每一行数据
row_list = []
# 跳过表头行,从第二行开始遍历
for tr in table.xpath('.//tr')[1:]:
    row_data = [td.text.strip() for td in tr.xpath('.//td')]
    row_list.append(row_data)

# 构造DataFrame
df = pd.DataFrame(row_list, columns=headers)
print(df)

3. 补上BeautifulSoup的正确用法

要是之前用BeautifulSoup没搞定,试试结合requests.session的写法:

import requests
from bs4 import BeautifulSoup
import pandas as pd

session = requests.Session()
target_url = "https://example.com/part-info"
resp = session.get(target_url)
soup = BeautifulSoup(resp.text, 'html.parser')

# 定位表格,也可以用soup.select('table#指定id')更精准
table = soup.find('table')
# 提取表头
headers = [th.get_text(strip=True) for th in table.find_all('th')]
# 提取行数据
row_list = []
for tr in table.find_all('tr')[1:]:
    row_data = [td.get_text(strip=True) for td in tr.find_all('td')]
    row_list.append(row_data)

df = pd.DataFrame(row_list, columns=headers)
print(df)

4. 批量处理的小技巧

  • 一定要复用会话对象(不管是HTMLSession还是requests.Session),别每次请求都新建,能省不少连接时间
  • 批量处理时可以加个小延时(比如time.sleep(1)),别猛刷网站容易被封
  • 要是想更快,试试多线程(比如用concurrent.futures.ThreadPoolExecutor),但注意控制并发数

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 02:05:10