首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何解析Etherscan?

如何解析Etherscan?
EN

Stack Overflow用户
提问于 2018-02-20 00:21:50
回答 1查看 2.3K关注 0票数 0

如何从https://etherscan.io/token/generic-tokenholders2?a=0x6425c6be902d692ae2db752b3c268afadb099d3b&s=0&p=1中解析每个页面的eth地址?然后将其添加到.txt。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-20 02:05:02

好吧,可能跑题了,但我想了个办法。(主要是因为我认为我将来可能需要使用类似的东西来抓取Etherscan的API不会返回的东西……)

下面的Python2代码将获取您想要的内容。我认为这可能与页面加载的速度有关,也可能与Etherscan施加的某些速率限制有关。我没有把握。

数据被写入一个.csv文件--一个文本文件不会有多大的乐趣。

代码语言:javascript
运行
复制
#!/usr/bin/env python

from __future__ import print_function
import os
import requests
from bs4 import BeautifulSoup
import csv
import time

RESULTS = "results.csv"
URL = "https://etherscan.io/token/generic-tokenholders2?a=0x6425c6be902d692ae2db752b3c268afadb099d3b&s=0&p="

def getData(sess, page):
    url = URL + page
    print("Retrieving page", page)
    return BeautifulSoup(sess.get(url).text, 'html.parser')

def getPage(sess, page):
    table = getData(sess, str(int(page))).find('table')
    return [[X.text.strip() for X in row.find_all('td')] for row in table.find_all('tr')]

def main():
    resp = requests.get(URL)
    sess = requests.Session()

    with open(RESULTS, 'wb') as f:
        wr = csv.writer(f, quoting=csv.QUOTE_ALL)
        wr.writerow(map(str, "Rank Address Quantity Percentage".split()))
        page = 0
        while True:
            page += 1
            data = getPage(sess, page)

            # Even pages that don't contain the data we're
            # after still contain a table.
            if len(data) < 4:
                break
            else:
                for row in data:
                    wr.writerow(row)
                time.sleep(1)

if __name__ == "__main__":
    main()

我敢肯定这不是世界上最好的Python。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48920861

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档