javascript 无法从网站获取持有者值

vuktfyat  于 2023-03-16  发布在  Java
关注(0)|答案(1)|浏览(127)

我正在使用cheerionode.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);
    }
  }
xuo3flqw

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,市值是乘以当前价格。
希望这个有用。

相关问题