月亮链 月亮链
Ctrl+D收藏月亮链
首页 > Fil > 正文

YTH:python爬取区块链浏览器上的交易列表数据_SPA

作者:

时间:1900/1/1 0:00:00

前言

2022年6月3日端午节安康。

今天主要分享如何利用爬虫爬取区块链浏览器上的交易列表数据。

原因

dune上没有bsc链上的转账明细数据表。FootprintAnalytics上现有的bsc_transactions表transfer_type粒度不够。

环境

python3.7

数据存储:mysql5.7

缓存:redis6.2.6

开发工具:pycharm

思路

所有协议、合约、swap地址转账信息全爬不太实际,对存储要求比较高。所以针对需要分析的协议,专门去爬取对应智能合约转账是个不错的选择。

区块链浏览器肯定是有反爬机制的。所以在代理选择上,要选择国外的代理。国内的代理都访问不到,具体原因你懂的。本文中不涉及代理部分,因为国外的代理厂家之前没有了解过。不过即使是上代理,对代码层面改动也比较小

采用了urllib同步请求+范围内随机时长程序休眠。减少了被风控的概率。但是也降低了爬虫的效率。

后面再研究用scrapy或异步请求

同步:请求发送后,需要接受到返回的消息后,才进行下一次发送。异步:不需要等接收到返回的消息。

实现

找到需要爬取合约的具体地址:

Pyth Network宣布推出SNX/USD喂价:4月22日消息,预言机项目Pyth Network宣布推出SNX/USD喂价,已支持超过18个区块链。[2023/4/22 14:20:24]

第一页

http://bscscan.com/txs?a=0xbd3bd95529e0784ad973fd14928eedf3678cfad8

第二页

https://bscscan.com/txs?a=0xbd3bd95529e0784ad973fd14928eedf3678cfad8&p=2

第三页

https://bscscan.com/txs?a=0xbd3bd95529e0784ad973fd14928eedf3678cfad8&p=3

....

可以知道p=?就代表页数。

然后F12点击“网络”,刷新界面,查看网络请求信息。

主要查看,网页上显示的数据,是哪个文件响应的。以什么方式响应的,请求方法是什么

Dune Analytics宣布开源Python库“Harmonizer”并将集成GPT4:4月21日消息,链上数据分析平台Dune Analytics官推宣布开源Python库“Harmonizer”,Harmonizer主要将来自Postgres&Spark的查询转换为DuneSQL,并且大量利用了SQLGlot(一个处理SQL语言的Python库),Dune使用SQLGlot将查询解析成一个Abstract Syntax Tree,然后翻译成DuneSQL,通过自定义规则传递查询以将其匹配到新平台。Dune Analytics还表示目前正致力于集成GPT4,以使Harmonizer更加强大。[2023/4/22 14:19:20]

如何验证呢,就是找一个txn_hash在响应的数据里面按ctrl+f去搜索,搜索到了说明肯定是这个文件返回的。

查看响应的数据,是html的格式。在python里面,处理html数据,个人常用的是xpath

在python里面安装相关的依赖

pip?install?lxml?‐i?https://pypi.douban.com/simple

同时在浏览器上安装xpath插件,它能更好的帮助我们获到网页中元素的位置

预言机Pyth Network宣布上线Base网络:金色财经报道,预言机项目Pyth Network宣布上线Base网络,并为之提供超过200个价格源。

Base是Coinbase于今日推出的基于OP Stack的以太坊L2网络。[2023/2/24 12:26:04]

XPathHelper-Chrome网上应用店(google.com)

然后就可以通过插件去定位了,返回的结果是list

**注:**浏览器看到的网页都是浏览器帮我们渲染好的。存在在浏览器中能定位到数据,但是代码中取不到值的情况,这时候可以通过鼠标右键-查看网页源码,然后搜索实现

#?请求和xpath定位具体实现代码:

def?start_spider(page_number):

????url_base?=?'http://bscscan.com

/txs?a=0xbd3bd95529e0784ad973fd14928eedf3678cfad8&'

英国喜剧天团Monty Python成员John Cleese发布NFT:英国喜剧天团 Monty Python 的成员 John Cleese 正在拍卖一件自己的 NFT 画作,这幅名为「布鲁克林大桥」的作品为 John Cleese 本人在 iPad 上绘制的布鲁克林大桥写生,目前正在 NFT 市场 OpenSea 上进行拍卖,该作品起拍价为 100 美元,目前最高出价为 50000USDC。John Cleese「布鲁克林大桥」的作品受到本周早些时候另一件名为「待售桥」的 NFT 作品的启发,这是一件布鲁克林大桥的 Google 在地图视图,目前在 OpenSea 上价值 27 美元,意欲讽刺美国历史上臭名昭著的犯 George C. Parker,从 1900 年至 1928 年,George C. Parker 使用不同的假名,出售了很多美国地标建筑,包括自由女神像,麦迪逊广场花园,大都会博物馆,格兰特将军国家纪念堂,和布鲁克林桥。[2021/3/21 19:04:17]

????#?请求头

????headers?=?{

????????'User-Agent':?'Mozilla/5.0?(Windows?NT?10.0;?Win64;?x64)?AppleWebKit/537.36?(KHTML,?like?Gecko)?Chrome/92.0.4515.159?Safari/537.36',

????????'referer':?'https://bscscan.com/txs?a=0xbd3bd95529e0784ad973fd14928eedf3678cfad8'

动态 | 软件开发人员推出新BCH库Bitcoinpython:据bitcoin.com报道,软件开发人员Corentin Mercier在推特上宣布推出使用Python编程语言编写的新BCH完整节点。该项目被称为Bitcoinpython,Mercier称其为迄今为止“最快、最简单的Python库”。该库据称有五个好处,有着强大的API、符合所有BCH改进协议、适用于所有主要平台、有着大量的文档以及比此前的Python库快100倍。[2019/3/29]

????}

????#?需要传入的参数

????data?=?{

????????'p':?page_number

????}

????#?将参数转为Unicode编码格式

????unicode_data?=?urllib.parse.urlencode(data)

????#?拼接网址

????#?http://bscscan.com/txs?a=0xbd3bd95529e0784ad973fd14928eedf3678cfad8

????url?=?url_base?+?unicode_data

????#?自定义request对象

????request?=?urllib.request.Request(url=url,?headers=headers)

????#?模拟浏览器发送请求

????response?=?urllib.request.urlopen(request)

????#?将返回的数据利用lxml转为

????tree?=?etree.HTML(response.read().decode('utf‐8'))

????#?//div//tbody//td//span/a/text()

????txn_hash_list?=?tree.xpath("//div//tbody//td//span/a/text()")

????#?//div//tbody//td//span/text()

????method_list?=?tree.xpath(

????????"//div//tbody//td//span/text()")

????#?//div//tbody//td//text()

????block_list?=?tree.xpath("//div//tbody//td//text()")

????#?//div//tbody//td/span/@title

????age_list?=?tree.xpath("//div//tbody//td/span/@title")

????#?//div//tbody//td/span/@title

????from_list?=?tree.xpath(

????????"//div//tbody//td/span/@title")

????#?//div//tbody//td/span/text()

????transfer_type_list?=?tree.xpath("//div//tbody//td/span/text()")

????#?//div//tbody//td/span/span//text()

????to_list?=?tree.xpath("//div//tbody//td/span/span//text()")

????#?//div//tbody//td/span/text()

????transfer_free_list?=?tree.xpath(

????????"//div//tbody//td/span/text()")

然后就是利用redis,对txn_hash去重,去重的原因是防止一条数据被爬到了多次

def?add_txn_hash_to_redis(txn_hash):

????red?=?redis.Redis(host='根据你自己的配置',?port=6379,?db=0)

????res?=?red.sadd('txn_hash:txn_set',?get_md5(txn_hash))

????#?如果返回0,这说明插入不成功,表示有重复

????if?res?==?0:

????????return?False

????else:

????????return?True

#?将mmsi进行哈希,用哈希去重更快

def?get_md5(txn_hash):

????md5?=?hashlib.md5()

????md5.update(txn_hash.encode('utf-8'))

????return?md5.hexdigest()

最后一个需要考虑的问题:交易是在增量了,也就是说,当前第二页的数据,很可能过会就到第三页去了。对此我的策略是不管页数的变动。一直往下爬。全量爬完了,再从第一页爬新增加的交易。直到遇到第一次全量爬取的txn_hash

最后就是存入到数据库了。这个没啥好说的。

以上就可以拿到转账列表中的txn_hash,后面还要写一个爬虫深入列表里面,通过txn_hash去爬取详情页面的信息。这个就下个文章再说,代码还没写完。

今天就写到这里。拜拜ヾ(?ω?`)o

来源:Bress

作者:撒酒狂歌

标签:YTHSPAODYDIVyth币介绍Space CryptoBloody TokenDiviLand

Fil热门资讯
777:金色数藏META | 「邀好友得520限定藏品」中奖名单_MET

由金色财经孵化的数藏平台——Beta测试版已于5月20日正式上线,伴随上线我们策划了一系列福利活动.

1900/1/1 0:00:00
NFT:电商巨头eBay首次发行NFT_SmartMesh

5月23日消息,全球电商巨头eBay宣布已经与NFT平台OneOf达成合作,首次发行NFT系列.

1900/1/1 0:00:00
NFT:NFT将改变元宇宙中的数据所有权_WEB

随着元宇宙的持续发展,下一步就是让这些虚拟体验变得超真实,将沉浸式内容体验扩展到数十亿个人,只有通过自动AI工具才能实现.

1900/1/1 0:00:00
数字货币:IMF和法国央行:未来三到五年内将出现更多的CBDC_FORGE币

金色财经报道,周一在达沃斯世界经济论坛的一个小组讨论会上,法国央行行长表示,未来三年世界可能会出现一种强大的央行数字货币.

1900/1/1 0:00:00
区块链:开发者必备实用手册:构建区块链应用程序最佳工具一览_DAPP

据报道,现在区块链是发展最快的领域之一。随着区块链项目(DeFi、NFT、DAO)的激增,对区块链开发人员的需求也在直线上升.

1900/1/1 0:00:00
NFT:NFT 周期轮转:野生 泡沫和价值回归_ICOBay

NFT交易量周期具有“热点引爆”、“从大到小”、“延续性”等特征,目前市场处在大周期的延展浪上。NFT的发展阶段已从“大众媒体”转向“社区传播”,其炒作周期呈现“板块轮动性”.

1900/1/1 0:00:00