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

如何利用隐藏API爬取采用JavaScript分页的目标网站?

利用隐藏API爬取Supralift网站数据的方法

首先,API返回405错误明确说明GET请求不被支持,你需要按照网站自身调用这个接口的方式来构造请求,具体步骤如下:

  • 确认请求方法:回到Chrome控制台的Network标签,找到网站调用/api/search/item/summary的那条请求,查看它的Request Method——大概率是POST请求,这才是接口允许的请求方式。

  • 复制完整请求参数:

    • 提取请求头:把浏览器请求里的User-Agent、Content-Type、Referer这些关键头信息复制下来,部分网站还会有自定义的验证头(比如X-CSRF-Token),这些都必须带上,否则会被拦截。
    • 提取请求体:查看请求的Payload部分,里面肯定包含分页相关参数(比如pageNumber、pageSize),还有搜索关键词、筛选条件等内容,这些是控制返回数据范围的核心。
  • 模拟请求实现翻页爬取:
    用你熟悉的编程语言构造POST请求,修改请求体里的pageNumber参数来实现翻页。举个简单的Python示例:

    import requests
    import time
    
    api_url = "https://www.supralift.com/api/search/item/summary"
    # 从浏览器复制的请求头
    request_headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36",
        "Content-Type": "application/json",
        "Referer": "https://www.supralift.com/uk/itemsearch/results"
    }
    
    # 先调用一次获取总页数,这里示例假设总页数为10,实际需从返回数据提取
    total_pages = 10
    for page in range(1, total_pages + 1):
        # 构造请求体,修改pageNumber
        request_body = {
            "pageNumber": page,
            "pageSize": 20,
            # 补充从浏览器复制的其他搜索/筛选参数
        }
        response = requests.post(api_url, headers=request_headers, json=request_body)
        if response.status_code == 200:
            result_data = response.json()
            # 处理返回的数据,比如保存到文件或数据库
            print(f"第{page}页数据获取成功")
        else:
            print(f"第{page}页请求失败,状态码:{response.status_code}")
        # 添加延时,避免触发反爬机制
        time.sleep(2)
    
  • 额外注意事项:

    • 不要高频请求,适当添加延时,防止IP被封禁。
    • 如果请求失败,检查是否遗漏了Cookie或其他验证头,可以直接从浏览器复制完整的Cookie信息加到请求头里。
    • 首次请求后查看返回数据,找到总页数的字段,动态设置循环终止条件,不用硬编码页数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 21:42:09