質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Blockchain

Blockchain(ブロックチェーン)とは、分散型台帳技術もしくは分散型ネットワークのことを指します。クラウド上のデータを分散し、ノード間でデータの相違があった際には他ノードの合意によって信頼性が高いデータを判断。データの確保および信憑性を保持する技術です。

Ethereum

Ethereum(イーサリアム)は、ビットコインに次いで時価総額が大きい仮想通貨もしくはそのブロックチェーン技術を指します。DApps やスマート・コントラクトの構築を目的としたプラットフォームであり、OSSで開発されています。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

1回答

1438閲覧

Ethereumのエクスプローラー(Etherscan)のAPIでデータを一括で全件取得する方法について

cloud_color

総合スコア7

Blockchain

Blockchain(ブロックチェーン)とは、分散型台帳技術もしくは分散型ネットワークのことを指します。クラウド上のデータを分散し、ノード間でデータの相違があった際には他ノードの合意によって信頼性が高いデータを判断。データの確保および信憑性を保持する技術です。

Ethereum

Ethereum(イーサリアム)は、ビットコインに次いで時価総額が大きい仮想通貨もしくはそのブロックチェーン技術を指します。DApps やスマート・コントラクトの構築を目的としたプラットフォームであり、OSSで開発されています。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2019/02/19 02:19

編集2019/02/21 05:36

・なにがしたいのか
以下を実行するとAPIから情報を取得できるのですが、
page_no=1だけでなく一括でAPI上の全件データを取得する方法はあるのでしょうか?

python

1from etherscan import accounts 2import pandas as pd 3import datetime as dt 4API_KEY = 'xxxxxx 5ADDRESS = 'xxxxxx' 6 7def get_tx_value(page_no, address, api_key): 8 ac = accounts.Account(address=address,api_key=api_key) 9# txes = ac.get_all_transactions() 10 txes = ac.get_transaction_page(page_no) 11 12 ret = [] 13 for t in txes: 14 tmp = [] 15 tmp.append(t.get('hash')) 16 tmp.append(t.get('from')) 17 tmp.append(t.get('to')) 18 tmp.append(int(t.get('value')) / 1000000000000000000 ) 19 tmp.append(dt.datetime.fromtimestamp(int(t.get('timeStamp')))) 20 ret.append(tmp) 21 return ret 22 23ret = get_tx_value(page_no=1, address=ADDRESS,api_key=API_KEY) 24df = pd.DataFrame(ret,columns=['hash','from','to','value','datetime']) 25df.to_csv('txes.tsv',sep='\t')

・なにを試したのか
以下を参考にget_all_transactionsを実行しました
https://github.com/corpetty/py-etherscan-api/blob/master/examples/accounts/get_all_transactions.py

python

1from etherscan.accounts import Account 2import json 3 4with open('../../api_key.json', mode='r') as key_file: 5 key = json.loads(key_file.read())['key'] 6 7address = '0x49edf201c1e139282643d5e7c6fb0c7219ad1db7' 8 9api = Account(address=address, api_key=key) 10transactions = api.get_all_transactions(offset=10000, sort='asc', 11 internal=False) 12 13print(transactions[0])

・なにが問題なのか
不明

・なんのエラーが出ているのか
****MacBook-Pro:accounts home$ python get_all_transactions.py page 1 added Traceback (most recent call last): File "get_all_transactions.py", line 11, in <module> internal=False) File "/anaconda3/lib/python3.6/site-packages/py_etherscan_api-0.8.0-py3.6.egg/etherscan/accounts.py", line 92, in get_all_transactions File "/anaconda3/lib/python3.6/site-packages/py_etherscan_api-0.8.0-py3.6.egg/etherscan/client.py", line 123, in connect etherscan.client.EmptyResponse: <Err: No transactions found>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

cloud_color

2019/02/19 09:20

ご質問ありがとうございます。 上記ですと、get_all_transactions() この関数でエラーを履くため、実行できなかったのです。。。
t_obara

2019/02/19 11:05

どのようなエラーかご提示いただけないでしょうか
cloud_color

2019/02/19 11:11

****MacBook-Pro:accounts home$ python get_all_transactions.py page 1 added Traceback (most recent call last): File "get_all_transactions.py", line 11, in <module> internal=False) File "/anaconda3/lib/python3.6/site-packages/py_etherscan_api-0.8.0-py3.6.egg/etherscan/accounts.py", line 92, in get_all_transactions File "/anaconda3/lib/python3.6/site-packages/py_etherscan_api-0.8.0-py3.6.egg/etherscan/client.py", line 123, in connect etherscan.client.EmptyResponse: <Err: No transactions found>
t_obara

2019/02/19 11:14

コードもお願いします。質問本文に上記の結果も合わせてご提示ください。
cloud_color

2019/02/19 11:20

from etherscan.accounts import Account import json with open('../../api_key.json', mode='r') as key_file: key = json.loads(key_file.read())['key'] address = '0x49edf201c1e139282643d5e7c6fb0c7219ad1db7' api = Account(address=address, api_key=key) transactions = api.get_all_transactions(offset=10000, sort='asc', internal=False) print(transactions[0])
cloud_color

2019/02/19 11:21

コードはこちらです。上記Githubのリンクのコードそのままです >質問本文に上記の結果も合わせてご提示ください。 →こちらはどういう意味でしょうか?
cloud_color

2019/02/19 11:21

コードはこちらです。上記Githubのリンクのコードそのままです >質問本文に上記の結果も合わせてご提示ください。 →こちらはどういう意味でしょうか?
firedfly

2019/02/21 00:05

ここは「質問への追記・修正の依頼」を書くところなので、だれもが見るわけではないです。 みなに見える質問本文に反映してほしい、ということだと思います。
guest

回答1

0

こんにちは。

2019/02/21現在、その関数は使えません(作者も把握していて修正中です)。
参考:Ethereumのエクスプローラー(Etherscan)のAPIでアドレスの取引を出力する(イーサリアム) - Qiita

当座の解決策としてはget_transaction_page(page_no)をループで回せばいいでしょう。
総ページ数を取得するか、エラーになるまでpage_noを増やし続けるかすればよいです。

投稿2019/02/21 02:00

編集2019/02/21 05:42
firedfly

総合スコア1131

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

cloud_color

2019/02/21 02:30

ご連絡いただきありがとうございます。 get_all_transactions()にて上記エラーを回避する方法はご存知でしょうか? 解決策をご教示いただけますとありがたいです。。。
firedfly

2019/02/21 02:32

まずは質問文を編集して、下をご追記願います。 ・なにがしたいのか ・なにを試したのか ・なにが問題なのか ・なんのエラーが出ているのか
cloud_color

2019/02/21 05:37

追記しました。ご確認ください。
firedfly

2019/02/21 05:43

ありがとうございます。確認しました。 回答を合わせて変更しましたのでご確認ください。
cloud_color

2019/02/21 12:43

ありがとうございます。 そのループ処理も試そうとしたのですが、うまくいきません。。。 (page_no)に引数1だと動くのですが2以降だとエラーとなり動かなくなります。。。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問