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

使用BeautifulSoup爬取港交所市值数据失败问题求助

港交所市值数据爬取问题解决方法

问题原因

港交所该页面的市值数据是动态加载的,requests.get()仅能获取页面初始的静态HTML,而实际市值数据是通过JavaScript在浏览器渲染完成后才加载到页面中的,所以你用BeautifulSoup解析静态内容时,目标dt标签内没有实际文本内容。

解决方案1:使用Selenium模拟浏览器加载

Selenium可以模拟浏览器打开页面,等待JavaScript加载完成后再获取完整页面内容,从而拿到动态渲染的市值数据。

代码示例

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

URL = 'https://www.hkex.com.hk/Market-Data/Securities-Prices/Equities/Equities-Quote?sym=82&sc_lang=en'

# 初始化Chrome浏览器驱动(需提前下载对应版本的ChromeDriver并配置路径)
driver = webdriver.Chrome()
driver.get(URL)

# 等待目标元素加载完成,最长等待10秒
try:
    WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.CLASS_NAME, 'col_mktcap'))
    )
    # 获取加载完成后的页面源码
    page_source = driver.page_source
    soup = BeautifulSoup(page_source, "html.parser")
    
    # 查找市值标签并提取相邻dd标签内的数值
    mktcap_element = soup.find("dt", class_="ico_data col_mktcap")
    if mktcap_element:
        mktcap_value = mktcap_element.find_next_sibling("dd").text.strip()
        print(f"市值:{mktcap_value}")
finally:
    driver.quit()

解决方案2:直接调用页面API接口

通过浏览器开发者工具找到页面加载市值数据的API接口,直接请求接口获取数据,这种方法比Selenium更高效。

操作步骤

  • 打开目标页面,按F12打开开发者工具
  • 切换到「网络」标签,刷新页面
  • 筛选「XHR」类型的请求,查找包含mktcap或quote关键词的接口
  • 复制接口URL和请求参数,用requests直接请求获取JSON格式数据

示例代码(需根据实际接口调整)

import requests

# 示例API接口(实际需从开发者工具中获取真实接口)
API_URL = "https://www.hkex.com.hk/Market-Data/Securities-Prices/Equities/Equities-Quote/GetQuote?sym=82&sc_lang=en"
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36"
}

response = requests.get(API_URL, headers=headers)
if response.status_code == 200:
    data = response.json()
    # 根据返回的JSON结构提取市值数据,路径需按需调整
    mktcap = data.get("quote", {}).get("mktCap", "")
    print(f"市值:{mktcap}")

注意事项

  • 使用Selenium时,浏览器驱动版本需与本地浏览器版本匹配
  • 请求API接口时,需携带合适的请求头,避免被网站拦截
  • 港交所的接口可能会不定期更新,需定期验证接口有效性

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 15:27:37