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

Python Requests无法获取正确URL内容的问题排查

解决ETFDB分页请求始终返回第1页的问题

问题原因分析

  • 锚点参数不被服务器解析:原URL中的#etfs&...属于浏览器端锚点,服务器不会处理#之后的参数,因此无论你在锚点后添加多少分页参数,服务器都无法接收,只会返回默认的第1页内容。而浏览器能正常显示对应分页,是因为页面加载后通过JavaScript读取锚点参数,再动态请求对应数据。
  • 请求头缺失导致被识别为非浏览器请求:服务器可能通过检查User-Agent等请求头字段判断请求合法性,若requests请求未携带这类头信息,服务器可能返回默认页面。

解决方法

  1. 修正URL参数格式
    把URL中的#替换为?,让服务器正确解析分页参数。示例正确URL:

    https://etfdb.com/etfs/asset-class/equity/?sort_name=assets_under_management&sort_order=desc&page=61
    

    (etfs参数可测试是否必要,多数情况下可省略)

  2. 添加浏览器请求头
    模拟浏览器发送请求,至少携带User-Agent字段,示例代码:

    import requests
    
    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'
    }
    
    url = 'https://etfdb.com/etfs/asset-class/equity/?sort_name=assets_under_management&sort_order=desc&page=61'
    response = requests.get(url, headers=headers)
    # 可通过打印或解析HTML验证内容是否对应目标分页
    
  3. 排查动态加载的API接口
    如果上述方法无效,说明页面数据通过AJAX动态加载。打开浏览器开发者工具的「Network」面板,切换到「XHR/Fetch」标签,切换分页时观察新出现的请求,找到返回分页数据的API接口,直接请求该接口获取结构化数据(通常为JSON格式),这比解析HTML更高效可靠。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 22:57:20