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

使用BeautifulSoup爬取Sydbank利率遇阻:数据存于JavaScript求方案

动态渲染页面利率数据爬取方案
  • 直接提取页面JS中的数据
    打开网页源码,搜索currency、rate这类和利率相关的关键词,定位存储数据的JS变量(通常是JSON格式)。用正则表达式把变量内容提取出来,再转成JSON解析就行。
    示例代码:

    import requests
    import re
    import json
    
    url = "https://www.sydbank.dk/omsydbank/priser/rente"
    resp = requests.get(url)
    # 这里的正则要根据实际找到的JS变量名调整,比如假设变量是window.rateData
    data_match = re.search(r'window\.rateData\s*=\s*(.*?);', resp.text)
    if data_match:
        rate_data = json.loads(data_match.group(1))
        # 从rate_data里提取各币种利率
    
  • 用浏览器自动化工具渲染页面
    用Selenium模拟浏览器加载页面,等JS把数据渲染出来后再抓取内容。这种方法能应对绝大多数动态渲染场景,就是速度比直接抓接口慢一点。
    示例代码:

    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
    from bs4 import BeautifulSoup
    
    # 初始化浏览器驱动,需提前下载对应浏览器的驱动文件
    driver = webdriver.Chrome()
    driver.get("https://www.sydbank.dk/omsydbank/priser/rente")
    # 等待利率表格加载完成,超时时间10秒
    WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.CSS_SELECTOR, "table"))
    )
    # 获取渲染后的页面源码,用BeautifulSoup解析
    soup = BeautifulSoup(driver.page_source, "html.parser")
    # 提取表格里的币种和利率数据
    driver.quit()
    
  • 抓包找数据接口
    这是最高效的方法:打开浏览器F12开发者工具,切换到「Network」标签,刷新页面,找XHR/Fetch类型的请求,查看响应内容,定位返回利率数据的API接口。之后直接用requests请求这个接口,就能拿到结构化的JSON数据,不需要处理页面渲染。注意请求时可能需要带上原页面的请求头(比如User-Agent、Referer),避免被拦截。

内容的提问来源于stack exchange,提问作者A.500

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 03:12:42