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

如何抓取积分榜页面中静态源码未展示的球队名称及href链接

动态页面数据抓取解决方案

问题原因

你要抓取的页面数据属于客户端动态渲染内容,服务器返回的初始HTML仅包含页面基础框架,积分榜数据是页面加载完成后通过异步AJAX请求拉取,再由JS渲染到页面DOM中的,所以直接查看初始源代码看不到对应数据。

可行实现方案

  • 方案1:无头浏览器模拟页面渲染

    用支持JS执行的无头浏览器工具模拟正常用户访问,等页面完全渲染后再提取DOM中的球队名和链接属性,适配几乎所有动态页面场景,不需要额外分析接口逻辑。
    常用工具包括Python生态的Selenium、Playwright、Pyppeteer,Node.js生态的Puppeteer等。
    示例代码(Python + Playwright):
    from playwright.sync_api import sync_playwright
    
    TARGET_URL = "http://arsiv.mackolik.com/Standings/Default.aspx?sId=57488"
    
    with sync_playwright() as p:
        # 启动无头模式的Chromium浏览器
        browser = p.chromium.launch(headless=True)
        page = browser.new_page()
        page.goto(TARGET_URL)
        # 等待积分榜表格加载完成,选择器可通过F12开发者工具自行调整
        page.wait_for_selector("table tbody tr td a[href*='/Team/']")
        
        # 提取所有球队的名称和对应链接
        team_elements = page.locator("td a[href*='/Team/']").all()
        for elem in team_elements:
            team_name = elem.inner_text().strip()
            team_href = elem.get_attribute("href").strip()
            print(f"球队名:{team_name},链接:{team_href}")
        
        browser.close()
    
  • 方案2:抓包分析异步接口直接请求数据

    该方案性能更高,不需要加载页面静态资源和执行渲染逻辑,直接拿到结构化数据。
    操作步骤:
    1. 打开目标页面,按F12调出开发者工具,切换到「网络」标签,选择「XHR/ Fetch」过滤器
    2. 刷新页面,逐个查看请求的响应内容,找到包含球队名称、积分信息的异步请求
    3. 记录该请求的请求方法、请求头、参数,用requests、axios等HTTP请求工具直接模拟请求即可
  • 方案3:轻量JS渲染工具

    如果不想用重型的无头浏览器,可以选requests-html这类内置了JS渲染能力的HTTP请求库,比完整无头浏览器资源占用更低,也可以直接获取渲染后的页面内容。

注意:抓取数据请遵守目标网站的robots协议及相关法律法规,控制请求频率避免对目标服务器造成不必要的压力。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 03:36:03