数据是新石油互联网的加密货币数据,是进一步加密货币投资研究的丰富资源。管理和利用这些数据的能力将使我们在加密投资方面获得优势。
网络爬虫是指从网站下载数据,并从这些数据中提取有价值的信息的过程(因此得名爬虫)。出于我们的目的,我们对抓取网页上的加密货币数据感兴趣。
在这一系列文章中,我们将从概念开始,并在此基础上慢慢构建。最终,在网页上抓取加密货币数据应该成为你的第二天性!
网络爬行是一项重要的技能。通过从多个来源收集和分析数据,我们可以提高我们的投资智慧。
为什么要抓取网页?既然这么多网站提供免费工具,为什么会有人想要收集你自己的数据?大多数用户会使用CoinMarketCap、Coingecko、Live Coinwatch等网站来获取他们的数据,并建立他们的观察列表。那不是更方便吗?
在我看来,从新手(使用典型加密网站的标准功能)到自己的数据分析(网页抓取和建立自己的智能数据),两者都要用。
根据我的经验,我发现了以下好处:
保持控制和专注:我更加专注和受控,因为我知道我用电子表格建立的列表和分析是我投资目的的主要工作版本。我不需要依赖别人的数据。从一个网站跳到另一个网站也会分散我对主要任务的注意力。填空:不是所有的替代币都能在各大网站上使用。货币列表中总是有缺口和不一致的地方。当我们有了自己的数据,我们就可以管理它。高级分析:通过电子表格中的数据,可以进行高级分析和过滤,找到网站无法提供的小众币。个人注释和评论:您可以将它们添加到自己的电子表格中,以获得更多的评论和投资见解。我还加上了我将使用的地方,以及我将分配到人民币的资本金额。例如,当我们在电子表格中有数据时,我们可以在Solana和games中搜索硬币:
用索拉纳和包含这两个标签的游戏过滤我们的数据。
符合这个标准的货币有两种:阿特拉斯和波利斯。我们的网络搜集数据集还将包含更多投资研究的附加信息(市场价值、网站、Twitter链接等)。)
寻找既适合polkadot又适合游戏的硬币怎么样:
Polkadot和Gaming有四种硬币:EFI、SAITO、RING和CHI。
相比之下,大多数网站只支持初级过滤。例如,CoinMarketCap可以列出Polkadot生态系统中的所有硬币:
CoinMarketCap也可以列出所有游戏代币,但是不能同时列出Polkadot和游戏。
一般来说,这些网站不能超过两三级过滤,比如列出所有与Polkadot相关的游戏币。
从表面上看,高级过滤似乎不是什么大问题,但市面上的币数以千计。拥有这种自动化能力并保持专注是成功的关键。
概念我们将使用Python中的两个库:
BeautifulSoup是一个Python库,用于从HTML、XML和其他标记语言获取数据。请求,用于从网站获取HTML数据。如果HTML文件中已经有数据,就不需要请求库。我也是用Jupyter Notebook在Google云平台上运行,但是下面的Python代码可以在任何平台上运行。
根据各自的Python设置,可能需要pip install beautifulsoup4。
举一反三:网页抓取的“Hello World”。我们将从网页抓取的“Hello World”开始,抓取什么是BNB的介绍文本,如下图绿框所示。
使用Chrome浏览器访问BNB页面,然后右键单击该页面并单击“检查”来检查元素:
点击屏幕中间的小箭头,然后点击对应的网页元素,如下图所示。
通过检查,我们看到网页元素是
在p类sc-2qtjgt-0 eApVPN下,标题使用h2字幕和h3字幕,其余在p下。
from bs4 import beautiful soup import requests mainpage=requests . get(' https://coin market cap . com/currences/币安-coin/')soup=beautiful soup(main page . content,' html . parser ')what is=soup . find _ all(' p '{ ' class '' sc-2 qtjgt-0 EAP VPN ' })title=what is[0]。对于whatis[0]中的p,find _ all(' H2 ')print(title[0]. text . strip()' \\ n ')。find _ all(' p '):print(p . text . strip()' \\ n ')
示例2:网页抓取货币统计。在本例中,我们将使用BNB的统计数据,即市值、完全稀释市值、成交量(24小时)、发行量供应、成交量/市值。
在同一个BNB硬币页面上,转到页面顶部,单击“市值”网页元素。整个观察块被称为。
每个统计数据都有一种类型:
我们需要找到
这将检索五个统计数据。(由于加密货币是24×7交易,这些数字是不断变化的,与之前的截屏略有不同。)
stats container=soup . find _ all(' p '{ ' class '' hide stats container ' })stats values=stats container[0]。find_all('p '{ ' class '' stats value ' })stats value _ market cap=stats values[0]. text . strip()print(stats value _ market cap)stats value _ fully _摊薄_ market cap=stats values[1]. text . strip()print(stats value _ fully _摊薄_ market cap)stats values _ volume=stats values[2]. text . strip()print(stats value _ volume)stats value _ volume)stats value _ volume _ per _ market cap=stats values[3]. text . strip()print(中
输出如下(结果随时间变化,价格随时间变化)。
104 432 294 030美元3 550 594 245美元0.034 166 801 148.00 BNB
例3:练习作为练习,使用前两部分的知识,检查是否可以提取BNB和阿达(卡达诺)的最大供应量和总供应量的数据。
最大供应量和总供应量
ADA(卡达诺)最大供应量和总供应量
附录:美丽的替代品其他替代品有羊瘙痒病和硒。
Scrapy和Selenium比用于获取HTML数据的Request和用作HTML解析器的BeautifulSoup具有更陡峭的学习曲线。
Scrapy是一个完整的web抓取框架,负责从获取HTML到处理数据的所有事情。Selenium是一个浏览器自动化工具。例如,它允许用户在多个页面之间导航。网络爬行的挑战:寿命任何网络爬行的主要挑战是代码的寿命。CoinMarketCap等网站的开发者在不断更新自己的网站,旧代码可能过一段时间就不行了。
一种可能的解决方案是使用由各种网站和平台提供的应用编程接口(API)。但是,API的免费版本是有限的。使用API时,数据的格式不同于通常的网页抓取,即JSON或XML。在标准的网络爬行中,我们主要处理HTML格式的数据。