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

Scraping无限滚动页面效率低,求教调用aitoptools.com的API方法

解决Scraping效率问题:改用目标网站API替代Selenium

为什么你的Selenium方案效率低?

Selenium是模拟浏览器的重型工具,要加载完整页面、渲染JS、等待滚动加载,爬10000条数据时,光是页面渲染和等待的时间就会拖垮效率,完全没必要用这种方案。

如何找到并调用目标网站的API?

  1. 抓包定位API接口

    • 打开目标网站,按F12调出开发者工具,切换到「Network」面板后刷新页面。
    • 滚动页面加载更多工具,观察XHR/fetch类型的请求——这类请求就是网站加载工具列表的异步接口(比如WordPress常用的/wp-admin/admin-ajax.php,或专门的列表接口)。
    • 点击对应请求,查看「Request URL」「Request Method」「Form Data/Query Parameters」,这些就是调用API的核心信息。
  2. 用requests库直接调用API(示例代码)
    以下是模拟调用的模板,你需要根据抓包结果调整参数:

    import requests
    import time
    
    def fetch_all_tools():
        all_tools = []
        page = 1
        per_page = 20  # 从抓包结果里看每页返回的数量
        while True:
            # 替换成你抓包到的真实API地址
            api_url = "https://aitoptools.com/wp-admin/admin-ajax.php"
            # 替换成抓包到的请求参数
            payload = {
                'action': 'load_more_tools',
                'page': page,
                # 其他可能的参数:分类、排序条件等,从抓包的Form Data里复制
            }
            # 替换成抓包到的请求头,User-Agent必须加
            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',
                'Referer': 'https://aitoptools.com/'
            }
            
            response = requests.post(api_url, data=payload, headers=headers)
            # 假设接口返回JSON格式,实际按抓包的响应格式调整
            response_data = response.json()
            
            # 没有更多数据就停止循环
            if not response_data.get('tools'):
                break
            
            all_tools.extend(response_data['tools'])
            page += 1
            # 加短延迟避免请求过于频繁被封
            time.sleep(0.5)
        
        # 提取并打印工具名称,字段名按实际返回的JSON结构调整
        for tool in all_tools:
            print(tool['title'])
        print(f"共抓取到{len(all_tools)}条数据")
    
    if __name__ == "__main__":
        fetch_all_tools()
    

你提到的XMLRequest怎么操作?

浏览器里的XMLHttpRequest就是发起AJAX请求的方式,对应到Python里就是用requests库发送HTTP请求。操作步骤很简单:

  • 从开发者工具的Network面板找到对应的XMLRequest请求
  • 复制请求的URL、请求方法(POST/GET)
  • 复制请求携带的参数(Form Data或Query String)
  • 复制请求头里的必要字段(比如User-Agent、Referer)
  • 把这些信息原封不动地搬到requests的调用代码里,就能模拟出相同的请求,直接拿到数据。

注意事项

  • 不要短时间内发送大量请求,加0.5-1秒的延迟,避免被网站封禁IP
  • 部分接口可能需要携带Cookie或验证信息,抓包时要一起复制到请求头中
  • 如果接口返回HTML片段,也可以用BeautifulSoup解析,但优先提取JSON字段,效率更高

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 12:10:08