【发布时间】:2022-02-23 02:28:28
【问题描述】:
https://immutascan.io/address/0xac98d8d1bb27a94e79fbf49198210240688bb1ed
这个 URL 有 100k+ 行,我正在尝试抓取。他们回去大约一个月(我相信 2022 年 1 月 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")
【问题讨论】:
标签: javascript html selenium web-scraping automation