如何更快地加载无限滚动页面?

How to load infinite scroll pages faster?

https://immutascan.io/address/0xac98d8d1bb27a94e79fbf49198210240688bb1ed

这个 URL 有 10 万多行我正在尝试抓取。他们回去大约一个月(我相信是 2022 年 10 月 10 日),但加载了 7-8 个徽章。

现在我有一个缓慢向下滚动页面的宏,它正在工作,但每天需要大约 8-10 小时的行。

截至目前,当加载新行时,会立即加载 2-3 个项目,然后随着时间的推移加载一些项目。我不需要加载缓慢的部分,希望它们加载得更快或根本不加载。

有没有一种方法可以阻止元素加载以加快加载其他行的速度?

我正在使用一个自动热键脚本,它可以通过鼠标滚轮向下滚动并且效果最好。

我也试过 Chrome 扩展,但速度较慢。

我曾经找到一个 python 脚本,但它并不比 autohotkey 快。

答案: Immutable X 有一个 API 所以我使用它而不是这个做同样事情的网站。这是工作代码:

import requests
import time
import pandas as pd
import time

URL = "https://api.x.immutable.com/v1/orders"
bg_output = []
params = {'status': 'filled',
          'sell_token_address': '0xac98d8d1bb27a94e79fbf49198210240688bb1ed'}

with requests.Session() as session:
    while True:
        (r := session.get(URL, params=params)).raise_for_status()
        data = r.json()
        for value in data['result']:
            orderID = value['order_id']
            info = value["sell"]["data"]["properties"]["name"]
            wei = value["buy"]["data"]["quantity"]
            decimals = value["buy"]["data"]["decimals"]
            spacer = "."
            eth = float(wei[decimals:] + spacer + wei[:decimals])
            print(f'Count={len(bg_output)},Order ID={orderID}, Info={info}, Eth={eth}')
            bg_output.append(f'Count={len(bg_output)},Order ID={orderID}, Info={info}, Eth={eth}')
            timestr = time.strftime("%Y%m%d")
            pd.DataFrame(bg_output).to_csv('bg_output' + timestr + '.csv')
            #print(len(bg_output))
        time.sleep(1)    
        if (cursor := data.get('cursor')):
            params['cursor'] = cursor
        else:
            print(bg_output)
            break
            
print(bg_output)
print("END")

您是否考虑过直接使用他们的 API?滚动页面时,请查看浏览器的开发工具“网络”选项卡。在那里您可以看到对他们 API 的实际调用。查看对 URL

的所有 POST 请求
https://3vkyshzozjep5ciwsh2fvgdxwy.appsync-api.us-west-2.amazonaws.com/graphql

尝试调整这些 API 调用,以便您可以通过它们 GraphQL-API 获取正确的数据,而无需滚动实际页面。