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

使用BS4网页爬取问题:无法获取目标网站表格数据

解决动态表格爬取问题

你遇到的核心问题是静态爬取工具无法获取JavaScript动态渲染的表格——这个网页的表格大概率是页面加载后通过JS异步生成或填充的,requests只能拿到初始的静态HTML,此时表格内容还没被渲染出来,所以BeautifulSoup自然找不到它。下面给你两种可行的解决方案:

方案一:用浏览器自动化工具(Selenium)模拟真实加载

Selenium可以模拟浏览器的完整加载流程,等JavaScript渲染完表格后再提取内容,步骤如下:

  1. 先安装依赖:
pip install selenium
  1. 下载对应你浏览器版本的驱动(比如Chrome的ChromeDriver),确保驱动路径配置正确。
  2. 编写实现代码:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from bs4 import BeautifulSoup
import pandas as pd

# 初始化Chrome驱动(记得替换成你的驱动路径)
driver = webdriver.Chrome(executable_path='./chromedriver')
driver.get('http://www.kianfunds2.com/%D8%A7%D8%B1%D8%B2%D8%B4-%D8%AF%D8%A7%D8%B1%D8%A7%DB%8C%DB%8C-%D9%87%D8%A7-%D9%88-%D8%AA%D8%B9%D8%AF%D8%A7%D8%AF-%D9%88%D8%A7%D8%AD%D8%AF-%D9%87%D8%A7')

try:
    # 等待表格元素加载完成(超时10秒,可根据实际调整)
    WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.TAG_NAME, 'table'))
    )
    # 获取渲染完成后的页面源码
    page_source = driver.page_source
    soup = BeautifulSoup(page_source, 'html.parser')
    # 定位目标表格
    target_table = soup.find('table')
    # 直接用pandas把表格转成Excel
    df = pd.read_html(str(target_table))[0]
    df.to_excel('funds_table.xlsx', index=False)
finally:
    # 关闭浏览器
    driver.quit()

方案二:直接爬取数据接口(更高效)

很多动态表格的数据是通过API接口异步获取的,你可以通过浏览器开发者工具找到这个接口:

  1. 打开网页按F12进入开发者工具,切换到「Network」标签;
  2. 刷新页面,筛选「XHR」或「Fetch」类型的请求,找到返回表格数据的接口;
  3. 复制接口URL,用requests直接请求拿到JSON数据,再转换成表格。

示例代码(需替换为你找到的真实接口):

import requests
import pandas as pd

# 替换为你找到的真实数据接口URL
api_url = 'http://www.kianfunds2.com/xxx/xxx'
headers = {
    # 模拟浏览器请求头,避免被拦截
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36'
}

response = requests.get(api_url, headers=headers)
data = response.json()

# 把JSON数据转换成DataFrame并保存为Excel
df = pd.DataFrame(data)
df.to_excel('funds_table.xlsx', index=False)

注意事项

  • 用Selenium时,务必保证浏览器驱动和浏览器版本完全匹配,否则会出现启动失败的问题;
  • 爬取接口时,注意观察请求的参数和Cookie,部分接口需要携带特定参数才能正常返回数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:14:20