-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathtokenholdings.js
52 lines (45 loc) · 1.82 KB
/
tokenholdings.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
const puppeteer = require('puppeteer');
const hodlFetcher = async (token) => {
try {
const browser = await puppeteer.launch();
const [page] = await browser.pages();
var tokenHoldingsUrl = `https://bscscan.com/tokenholdings?a=${token}&ps=100&sort=total_price_usd&order=desc`;
console.log(tokenHoldingsUrl);
await page.goto(tokenHoldingsUrl, { waitUntil: 'networkidle0' });
const data = await page.evaluate(() => {
var all = document.querySelector('*');
console.log("-------------", all);
// return all
var result = [];
var index = 0;
all.querySelector("#tb1").querySelectorAll("td").forEach((td, i) => {
if(i % 8 > 0){
result[index].push(td.outerText);
}else{
index++;
result[index] = [];
}
});
console.log(result);
return result;
});
var result = data.map((item) => {
if(item instanceof Array){
return {
tokenName: item[0],
symbol: item[1],
quantity: item[2],
tokenPrice: item[3],
valueInBNB: item[5],
valueInUSD: item[6]
}
}
}).filter((p) => typeof p !== 'undefined');
// console.log(result);
await browser.close();
return result;
} catch (err) {
console.error(err);
}
}
module.exports = hodlFetcher;