网页抓取解密(数据就是新石油互联网上海量的加密货币数据应该成为你的第二天性)
优采云 发布时间: 2021-12-28 03:10网页抓取解密(数据就是新石油互联网上海量的加密货币数据应该成为你的第二天性)
数据是新的石油
互联网上的加密货币数据量是进一步研究加密货币投资的丰富资源。拥有管理和利用这些数据的能力将使我们在加密投资方*敏*感*词*有优势。
网络爬行是指从网站下载数据并从这些数据中提取有价值信息的过程(因此得名爬行)。出于我们的目的,我们对加密货币数据的网络爬行感兴趣。
在本系列文章中,我们将从一个概念开始,并在此基础上慢慢构建。最后,网络爬取加密货币数据应该成为你的第二天性!
网页抓取是一项重要的技能。通过采集
和分析来自多个来源的数据,我们可以改进我们的投资情报。
为什么要爬网?
既然有这么多提供免费工具的网站,为什么还有人要采集
你自己的数据呢?大多数用户将使用 CoinMarketCap、CoinGecko、Live Coin Watch 等网站来获取他们的数据并建立他们的观察名单。那不是更方便吗?
在我看来,从新手(使用典型加密网站的标准功能)到我们自己的数据分析(网络爬虫和构建我们自己的智能数据),我们都应该使用两者。
根据我的经验,发现了以下好处:
例如,当我们在电子表格中有数据时,我们可以在 Solana 和游戏中搜索*敏*感*词*:
使用收录
这两个标签的 Solana 和 Game 过滤我们的数据
符合此标准的*敏*感*词*有两种:ATLAS 和 POLIS。我们从网络抓取的数据集还将收录
更多关于投资研究的附加信息(市值、网站、Twitter 链接等)
寻找同时适用于 polkadot 和游戏的*敏*感*词*怎么样:
四种*敏*感*词*在 Polkadot 和 Gaming 中:EFI、SAITO、RING、CHI
为了比较,大多数网站只支持一级过滤。例如,CoinMarketCap 可以列出 Polkadot 生态系统中的所有*敏*感*词*:
CoinMarketCap 还可以列出所有游戏代币,但不能同时列出 Polkadot 和游戏。
一般来说,这些网站不能超过两三个级别的过滤,比如列出所有与 Polkadot 相关的游戏币。
从表面上看,高级过滤似乎不是什么大问题,但市场上有成千上万的*敏*感*词*,拥有这种自动化和保持专注的能力是成功的关键。
概念
我们将在 Python 中使用两个库:
我也是使用 Jupyter Notebook 在 Google Cloud Platform 上运行的,但是下面的 Python 代码可以在任何平台上运行。
根据各自的 Python 设置,可能需要 pip install beautifulsoup4。
实例学习:网页抓取的“Hello World”
我们将从网络上爬取的“Hello World”开始,抓取币安币(BNB)的介绍文字,如下图绿框所示。
使用 Chrome 浏览器访问 BNB 页面,然后右键单击该页面,然后单击检查以检查元素:
单击屏幕中间的小箭头,然后单击相应的网页元素,如下图所示。
通过检查,我们看到网页元素是
from bs4 import BeautifulSoup
import requests
mainpage = requests.get('https://coinmarketcap.com/currencies/binance-coin/')
soup = BeautifulSoup(mainpage.content, 'html.parser')
whatis = soup.find_all("div", {"class" : "sc-2qtjgt-0 eApVPN"})
title = whatis[0].find_all("h2")
print(title[0].text.strip() + "\n")
for p in whatis[0].find_all('p'):
打印(p.text.strip()+“\n”)
示例2:网络爬取币种统计
在本例中,我们将使用 BNB 统计数据,即市值、完全稀释市值、交易量(24 小时)、流通量、交易量/市值。
在同一个BNB币页面,到页面顶部,点击Market Cap的页面元素。观察整个块被调用
每个统计数据都有一个类型:
我们想找到
这将检索五个统计信息。(由于加密货币是 24x7 交易,这些数字总是在变化,与之前的屏幕截图略有不同。)
statsContainer = soup.find_all("div", {"class" : "hide statsContainer"})statsValues = statsContainer[0].find_all("div", {"class" : "statsValue"})statsValue_marketcap = statsValues[0].text.strip()
print(statsValue_marketcap)statsValue_fully_diluted_marketcap = statsValues[1].text.strip()
print(statsValue_fully_diluted_marketcap)statsValue_volume = statsValues[2].text.strip()
print(statsValue_volume)statsValue_volume_per_marketcap = statsValues[3].text.strip()
print(statsValue_volume_per_marketcap)statsValue_circulating_supply = statsValues[4].text.strip()
打印(statsValue_circulating_supply)
输出如下(结果随时间变化,价格随时间变化)。
$104,432,294,030 $104,432,294,030 $3,550,594,245 0.034 166,801,148.00 BNB
示例 3:练习
作为练习,使用前两部分的知识并检查您是否可以提取 BNB 和 ADA(卡尔达诺)的最大供应量和总供应量数据。
最大供应量和总供应量
ADA(卡尔达诺)最大供应量和总供应量
附录:BeautifulSoup 的替代品
其他替代方案是 Scrapy 和 Selenium。
Scrapy 和 Selenium 的学习曲线比用于获取 HTML 数据的 Request 和用作 HTML 解析器的 BeautifulSoup 更陡峭。
网络抓取的挑战:长寿
任何网络爬虫的主要挑战是代码的寿命。CoinMarketCap 等网站的开发者在不断更新自己的网站,旧代码可能过一段时间就失效了。
一种可能的解决方案是使用各种网站和平台提供的应用程序编程接口 (API)。但是,API 的免费版本是有限的。使用API 时,数据格式不同于通常的网络爬虫,即JSON或XML。在标准的网络爬虫中,我们主要处理HTML格式的数据。