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

如何用Python高效抓取多页网页交互式数据集至pandas DataFrame?

从多页交互式网页提取数据到Pandas DataFrame的方法

核心适用库

  • BeautifulSoup:处理静态HTML内容,解析网页结构提取数据,适合页面内容直接渲染的场景
  • Selenium:处理动态加载的交互式网页(比如需要翻页、JS渲染的内容),模拟浏览器操作获取完整页面
  • pandas:最终将提取的数据整理成DataFrame格式

高效实现步骤

1. 判断网页类型

  • 静态网页(右键查看源码能看到所有数据):用requests+BeautifulSoup组合
  • 动态网页(数据靠JS加载,源码看不到):用Selenium模拟浏览器加载页面

2. 静态网页提取流程

  1. 请求目标页面并解析:
import requests
from bs4 import BeautifulSoup
import pandas as pd

url = "目标网页地址"
response = requests.get(url)
soup = BeautifulSoup(response.text, "html.parser")
  1. 定位数据块:根据网页结构,用soup.find()/soup.find_all()找到包含数据示例和标签的元素(比如截图里的卡片、固定框)
  2. 提取单页数据:遍历每个数据块,提取数据示例文本和所有关联标签,存成字典列表
  3. 处理多页:构造分页URL(比如?page=1、?page=2),循环请求每一页,重复提取步骤
  4. 转成DataFrame:
data_list = []
# 填充循环提取的字典数据
df = pd.DataFrame(data_list)

3. 动态网页提取流程

  1. 安装Selenium并配置浏览器驱动(比如ChromeDriver):
pip install selenium
  1. 模拟浏览器操作提取多页数据:
from selenium import webdriver
from selenium.webdriver.common.by import By
import time

driver = webdriver.Chrome()
driver.get("目标网页地址")

data_list = []

while True:
    # 等待页面加载完成
    time.sleep(2)
    # 定位数据块并提取内容
    items = driver.find_elements(By.CLASS_NAME, "数据块类名")
    for item in items:
        sample_text = item.find_element(By.CLASS_NAME, "数据示例类名").text
        tags = [tag.text for tag in item.find_elements(By.CLASS_NAME, "标签类名")]
        data_list.append({"数据示例": sample_text, "关联标签": tags})
    # 尝试点击下一页,无下一页则终止循环
    try:
        next_btn = driver.find_element(By.CLASS_NAME, "下一页按钮类名")
        next_btn.click()
    except:
        break

driver.quit()
df = pd.DataFrame(data_list)

4. 注意事项

  • 遵守网站robots.txt规则,添加请求间隔(time.sleep())避免被封禁
  • 定位元素优先用ID、CLASS_NAME或CSS_SELECTOR,比XPATH更稳定
  • 关联标签可在DataFrame中存为列表,后续按需拆分或处理

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 02:37:18