前言
2022年6月3日端午节安康。
今天主要分享如何利用爬虫爬取区块链浏览器上的交易列表数据。
原因
dune上没有bsc链上的转账明细数据表。FootprintAnalytics上现有的bsc_transactions表transfer_type粒度不够。
环境
python3.7
数据存储:mysql5.7
缓存:redis6.2.6
开发工具:pycharm
思路
所有协议、合约、swap地址转账信息全爬不太实际,对存储要求比较高。所以针对需要分析的协议,专门去爬取对应智能合约转账是个不错的选择。
区块链浏览器肯定是有反爬机制的。所以在代理选择上,要选择国外的代理。国内的代理都访问不到,具体原因你懂的。本文中不涉及代理部分,因为国外的代理厂家之前没有了解过。不过即使是上代理,对代码层面改动也比较小
采用了urllib同步请求+范围内随机时长程序休眠。减少了被风控的概率。但是也降低了爬虫的效率。
后面再研究用scrapy或异步请求
同步:请求发送后,需要接受到返回的消息后,才进行下一次发送。异步:不需要等接收到返回的消息。
实现
找到需要爬取合约的具体地址:
ZkSync发布Java、Go和Python编程语言的新SDK:金色财经报道,zkSync宣布,为了让开发者更容易使用zkSync 2.0的功能,ZkSync新发布了Java、Go和Python编程语言的SDK。[2022/11/2 12:06:49]
第一页
http://bscscan.com/txs?a=0xbd3bd95529e0784ad973fd14928eedf3678cfad8
第二页
https://bscscan.com/txs?a=0xbd3bd95529e0784ad973fd14928eedf3678cfad8&p=2
第三页
https://bscscan.com/txs?a=0xbd3bd95529e0784ad973fd14928eedf3678cfad8&p=3
....
可以知道p=?就代表页数。
然后F12点击“网络”,刷新界面,查看网络请求信息。
主要查看,网页上显示的数据,是哪个文件响应的。以什么方式响应的,请求方法是什么
全球做市商IMC加入Pyth network:金色财经报道,全球做市商IMC今天宣布已加入预言机解决方案Pyth network。IMC将在网络上发布实时加密货币价格数据,并随着网络的不断扩大,寻求扩展到其他资产类别。目前有超过65家出版商为Pyth提供加密资产、股票、外汇和金属的第一方质量数据。(prnewswire)[2022/7/21 2:29:22]
如何验证呢,就是找一个txn_hash在响应的数据里面按ctrl+f去搜索,搜索到了说明肯定是这个文件返回的。
查看响应的数据,是html的格式。在python里面,处理html数据,个人常用的是xpath
在python里面安装相关的依赖
pip?install?lxml?‐i?https://pypi.douban.com/simple
同时在浏览器上安装xpath插件,它能更好的帮助我们获到网页中元素的位置
XPathHelper-Chrome网上应用店(google.com)
然后就可以通过插件去定位了,返回的结果是list
**注:**浏览器看到的网页都是浏览器帮我们渲染好的。存在在浏览器中能定位到数据,但是代码中取不到值的情况,这时候可以通过鼠标右键-查看网页源码,然后搜索实现
Optiver将加入预言机解决方案Pyth Network:3月15日,预言机解决方案Pyth Network发推称,Optiver将加入Pyth Network,向其网络发布AAPL、AMZN和SPY等美国股票和ETF的价格数据。
据悉,Optiver是一家全球自营交易公司,是各种交易所上市金融工具的做市商。[2022/3/15 13:57:16]
#?请求和xpath定位具体实现代码:
def?start_spider(page_number):
????url_base?=?'http://bscscan.com
/txs?a=0xbd3bd95529e0784ad973fd14928eedf3678cfad8&'
????#?请求头
????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',
Virtu Financial将向PythNetwork提供股票、外汇、期货和加密货币市场数据:大型高频交易做市商VirtuFinancial将向Solana生态预言机解决方案PythNetwork提供股票、外汇、期货和加密货币市场数据。[2021/6/25 0:05:12]
????????'referer':?'https://bscscan.com/txs?a=0xbd3bd95529e0784ad973fd14928eedf3678cfad8'
????}
????#?需要传入的参数
????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)
英国喜剧天团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]
????#?模拟浏览器发送请求
????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
作者:撒酒狂歌
金色财经报道,全球支付提供商Checkout.com将推出了一种新的稳定币结算系统,该系统将允许商家实时处理来自客户的加密支付,这可能会扩大稳定币在电子商务中的使用案例.
1900/1/1 0:00:00介绍众所周知,在加密领域,“稳定币”(stablecoin)是一个用词不当的词。首先,这些资产的稳定性差异很大。其次,术语“稳定币”指的是在加密生态系统中保持某些价值或“挂钩”的许多不同技术.
1900/1/1 0:00:00金色周刊是金色财经推出的一档每周区块链行业总结栏目,内容涵盖一周重点新闻、矿业信息、项目动态、技术进展等行业动态。本文是其中的新闻周刊,带您一览本周区块链行业大事.
1900/1/1 0:00:00进入2022年,加密资产市场走熊,但出现了板块轮动现象。热度先从DeFi2.0的疯狂走到泡沫破灭,又在稳定币大战与熄火中消失,PFP头像类NFT也逐渐从狂欢走入沉寂.
1900/1/1 0:00:00今日凌晨,Optimism与加密货币做市商Wintermute透露,2000万个Optimism代币被黑客盗取.
1900/1/1 0:00:00币安难安,接连遭遇彭博社、路透社发文指控。近日据彭博社报道,美国证券交易委员会对加密货币交易所币安的原生代币BNB发起了一项调查.
1900/1/1 0:00:00