一、 背景介绍
Etherscan 是 2015 年推出的一个以太坊区块探索和分析的分布式智能合同平台, 由于区块链中的交易信息等数据都是公开透明的 , 而 Etherscan 作为探索以太坊的窗口, 用户可以使用其查看自己的交易详情以及以太坊中的任何信息。
我们都有过这样的经历, 打开 taobao, 选了一件自己心仪已久的商品之后, 迫不及待的付了款, 看着卖家发了货之后, 心满意足的笑了笑。然而过了一天…两天…WTF (要文明, 其实是 where’s the food:)), 联系了卖家, 卖家告诉你 “亲, 我们已发货… …” 这时候, 有一个工具就是你的 “救命稻草” - 快递查询工具, 使用快递查询工具, 它会告诉你, 你的宝贝已经到了哪里, 距离你还有多少公里, 虽然对于快递的速度有些不爽, 但也足以安抚你焦躁的心灵。
其实在区块链世界中, 也有一个类似于上述 “快递查询工具” 的应用, 它就是 Etherscan, 网址是https://etherscan.io/
-----上文摘抄自知乎不得不备的工具 - Etherscan.io
在本项目中,打算在使用者给出一个Block的范围后,对该范围内的所有交易的信息做一个提取,并将最后提取的信息存入ether.json文件中。
二、信息提取规则
在最初始的Block网页中,先对每个交易的Txn_Hash和Method进行提取,再点击Txn_Hash进入详情页后,对详情页中的内容进行查找,假如有Transaction_Action这一项,则将该项爬取下来,否则直接返回即可。

详情页:

三、项目所用功能分析
该项目除了要使用最基本的网页爬取功能,还要实现对范围内的url的遍历、翻页功能、模拟打开详情页并将上一页的内容带入详情页中等一系列操作。
四、代码实现
爬虫的主体部分在spider文件夹的ether.py文件中:
import scrapy
import re
class EtherSpider(scrapy.Spider):
handle_httpstatus_list = [404]
name = 'ether'
allowed_domains = ['etherscan.io']
#start_urls = ['https://etherscan.io/txs?block=16538039&p=1']
start_urls = 'https://etherscan.io/txs?block='
def start_requests(self):
#print()
start = input('Please enter the Start and End Block values\n')
end = input()
#print(a)
#print(b)
for i in range(int (start),int (end)+1):
#使用拼接以实现Block范围内数据的爬取
url = self.start_urls + str(i

文章介绍了如何使用Python的Scrapy框架爬取Etherscan平台上特定区块范围内的交易信息,包括Txn_Hash、Method和Transaction_Action等关键数据,并将结果存储为json文件。过程中涉及网页翻页、模拟详情页访问及处理网站反爬策略等技术。实验总结提到,虽然爬虫能完成任务,但效率较低,建议优化请求方式以提高速度。
最低0.47元/天 解锁文章
2899

被折叠的 条评论
为什么被折叠?



