https://immutascan.io/address/0xac98d8d1bb27a94e79fbf49198210240688bb1ed
这个URL有一些100k+行,我正在尝试刮行。它们可以追溯到一个月前(我相信是2022年10月1日),但它们的徽章是7-8。
现在,我有一个宏在页面上慢慢滚动,这个宏正在工作,但是每天要花费8-10个小时的时间。
到目前为止,当新的行加载时,有2-3个项会立即加载,然后会有几个项随时间的推移加载。我不需要的部分加载缓慢,并希望他们加载得更快或根本不。
是否有一种方法可以阻止元素加载以加快其他行的加载?
我使用的是一个自动热键脚本,它用鼠标滚轮向下滚动,并且一直运行得很好。
我也尝试过Chrome扩展,但速度更慢。
我曾经找到一个python脚本,但它没有比自动热键更快。
回答:不变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")发布于 2022-02-12 21:19:25
你考虑过直接使用他们的API吗?滚动页面时,请查看浏览器的dev tools“network”选项卡。在这里,您可以看到对其API的实际调用。查看对URL的所有POST请求
https://3vkyshzozjep5ciwsh2fvgdxwy.appsync-api.us-west-2.amazonaws.com/graphql尝试调整这些API调用,这样您就可以通过它们的GraphQL获得正确的数据,而不必滚动实际的页面。
https://stackoverflow.com/questions/71095812
复制相似问题