我正在使用cheerio和node.js,并试图从这个网站刮持有人的总数。我可以从市场概述部分刮这个
或底部分析选项卡下的令牌分发部分。
但是,无论如何遍历DOM,都无法获取持有者的信息。
这就是我如何尝试从令牌分发部分中抓取,但它什么也没有返回:
async function getHolders() {
try {
const { data } = await axios.get(url);
const $ = cheerio.load(data);
const holders = $("div.ant-typography span.sc-doKvHv.hAxaGu").text();
console.log(holders);
} catch (err) {
console.error(err);
}
}
1条答案
按热度按时间xuo3flqw1#
正如@ggorlen提到的,你不能直接抓取那个页面,因为它是一个单页面应用程序。SPA会使用跨站点请求来异步加载数据。然而,我非常不赞成使用浏览器自动化,因为它完全是矫枉过正,引起的问题比它解决的问题还要多(在大多数情况下!)
您可以在开发人员控制台的“Network”选项卡下查看这些XHR请求(我建议通过XHR过滤)。
好消息是,这比那更容易!你需要向他们的JSON API发出请求来下载数据。
https://api.solscan.io/token/meta?token=EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v&cluster=
此URL将使持有人金额低于
data.holder
对于当前的供应量和市场容量,您需要向不同的端点发出请求,即:
https://api.solscan.io/account?address=EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v&cluster=
供应量是
data.tokenInfo.supply
,市值是乘以当前价格。希望这个有用。