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

使用Python进行Web Scraping:为何无法获取LBMA网站表格内容?

问题原因及解决方法

原因分析

  • 动态内容渲染:LBMA会员页面的表格是通过JavaScript动态生成的,requests.get()只能获取页面的静态HTML源码,无法加载JS执行后渲染的动态内容,所以找不到目标表格。
  • 选择器匹配偏差:你使用的class_='panel border-collapse w-full'对多类名的匹配逻辑,需要严格对应页面实际的类名组合;不过这不是本次问题的核心原因,核心还是动态加载导致表格不在初始响应里。

解决方法

方法1:用Selenium模拟浏览器加载(处理JS渲染)

Selenium可以模拟真实浏览器的加载流程,等JS执行完成后再获取完整页面源码:

from bs4 import BeautifulSoup
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

url = 'https://www.lbma.org.uk/membership/current-membership#-'

# 初始化浏览器驱动(需提前下载对应浏览器的driver,如ChromeDriver)
driver = webdriver.Chrome()
driver.get(url)

# 等待表格加载完成(最多等待10秒)
try:
    WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.CSS_SELECTOR, 'table.panel.border-collapse.w-full'))
    )
    # 获取渲染后的完整页面源码
    page_source = driver.page_source
    soup = BeautifulSoup(page_source, 'html.parser')
    table = soup.find_all('table', class_='panel border-collapse w-full')
    print(table)
finally:
    driver.quit()

方法2:直接调用数据接口(更高效)

打开浏览器开发者工具(F12)切换到「网络」标签,筛选XHR请求,找到加载会员数据的API接口(通常返回JSON格式数据),直接用requests请求接口获取数据,无需解析HTML:

import requests

# 替换为你实际找到的API接口地址
api_url = "https://www.lbma.org.uk/api/membership-list"
response = requests.get(api_url)
data = response.json()
print(data)

注意:API接口可能会随网站更新变化,需自行确认当前页面的真实请求地址。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 16:34:56