如何抓取网页数据(数据就是新石油互联网上海量的加密货币数据感兴趣系列)

优采云 发布时间: 2021-11-18 22:13

  如何抓取网页数据(数据就是新石油互联网上海量的加密货币数据感兴趣系列)

  网页抓取是一项重要的技能。

  

  数据是新的石油

  互联网上的加密货币数据量是进一步研究加密货币投资的丰富资源。拥有管理和利用这些数据的能力将使我们在加密投资方*敏*感*词*有优势。

  网络爬虫是指从 网站 下载数据并从这些数据中提取有价值信息的过程(因此得名爬虫)。出于我们的目的,我们对加密货币数据的网络爬行感兴趣。

  在这个系列文章中,我们将从这个概念开始,慢慢地构建它。最后,网络爬取加密货币数据应该成为你的第二天性!

  

  网页抓取是一项重要的技能。通过采集和分析来自多个来源的数据,我们可以改进我们的投资情报。

  为什么要爬网?

  既然有这么多网站 提供免费工具,为什么还有人要采集你自己的数据?大多数用户会使用网站,例如CoinMarketCap、CoinGecko、Live Coin Watch 来获取他们的数据并建立他们的观察名单。那不是更方便吗?

  在我看来,从新手(使用典型加密网站的标准功能)到我们自己的数据分析(网络爬虫和构建我们自己的智能数据),我们都应该使用两者。

  根据我的经验,发现了以下好处:

  保持控制和专注:我更加专注和控制,因为我知道我使用电子表格构建的列表和分析是我投资目的的主要工作版本。我不需要依赖其他人的数据。从一个站点跳到另一个站点也会分散我的注意力并阻止我专注于我的主要任务。

  填补空白:并非所有替代货币都可以在主 网站 上使用。货币清单总是存在差距和不一致的地方。当我们拥有自己的数据时,我们就可以对其进行管理。

  高级分析:通过电子表格中的数据,可以进行高级分析和过滤,找到网站无法提供的小众币。

  个人笔记和评论:您可以在自己的电子表格中添加列,以获得更多评论和投资见解。我还添加了我将使用的地方以及我将分配给货币的资金量。

  例如,当我们在电子表格中有数据时,我们可以在 Solana 和游戏中搜索*敏*感*词*:

  

  使用收录这两个标签的 Solana 和 Game 过滤我们的数据

  

  符合此标准的*敏*感*词*有两种:ATLAS 和 POLIS。我们从网络抓取的数据集还将收录更多关于投资研究的附加信息(市场价值、网站、Twitter 链接等)

  寻找同时适用于 polkadot 和游戏的*敏*感*词*怎么样:

  

  

  四种*敏*感*词*在 Polkadot 和 Gaming 中:EFI、SAITO、RING、CHI

  为了比较,大多数网站只支持一级过滤。例如,CoinMarketCap 可以列出 Polkadot 生态系统中的所有*敏*感*词*:

  

  CoinMarketCap 还可以列出所有游戏代币,但不能同时列出 Polkadot 和游戏。

  

  一般来说,这些网站不能超过两三个级别的过滤,比如列出所有与Polkadot相关的游戏币。

  从表面上看,高级过滤似乎不是什么大问题,但市场上有成千上万的*敏*感*词*,拥有这种自动化和保持专注的能力是成功的关键。

  概念

  我们将在 Python 中使用两个库:

  BeautifulSoup 是一个 Python 库,用于从 HTML、XML 和其他标记语言中获取数据。

  请求,用于从网站获取HTML数据。如果 HTML 文件中已有数据,则无需请求库。

  我也是使用 Jupyter Notebook 在 Google Cloud Platform 上运行的,但是下面的 Python 代码可以在任何平台上运行。

  根据各自的 Python 设置,可能需要 pip install beautifulsoup4。

  

  实例学习:网页抓取的“Hello World”

  我们将从网络上爬取的“Hello World”开始,抓取币安币(BNB)的介绍文字,如下图绿框所示。

  

  

  使用 Chrome 浏览器访问 BNB 页面,然后右键单击该页面,然后单击检查以检查元素:

  

  单击屏幕中间的小箭头,然后单击相应的网页元素,如下图所示。

  

  

  通过检查,我们看到网页元素是

  在 div 类 sc-2qtjgt-0 eApVPN 下

  使用 h2 作为标题

  字幕使用h3

  剩下的在p下

  

  从 bs4 导入 BeautifulSoup

  导入请求#检索网页并解析内容

  mainpage = requests.get('#39;)

  汤 = BeautifulSoup(mainpage.content,'html.parser')

  whatis = soup.find_all("div", {"class": "sc-2qtjgt-0 eApVPN"})#从内容中提取元素

  title = whatis[0].find_all("h2")

  打印(标题[0].text.strip()+“\n”)

  对于 whatis[0].find_all('p') 中的 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()

  打印(statsValue_marketcap)statsValue_fully_diluted_marketcap = statsValues[1].text.strip()

  打印(statsValue_fully_diluted_marketcap)statsValue_volume = statsValues[2].text.strip()

  打印(statsValue_volume)statsValue_volume_per_marketcap = statsValues[3].text.strip()

  打印(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 更陡峭。

  Scrapy 是一个完整的网页抓取框架,负责从获取 HTML 到处理数据的所有内容。

  Selenium 是一个浏览器自动化工具,例如,它允许用户在多个页面之间导航。

  网络抓取的挑战:长寿

  任何网络爬虫的主要挑战是代码的寿命。CoinMarketCap等网站的开发者在不断更新他们的网站,老代码可能过一段时间就不能用了。

  一种可能的解决方案是使用平台提供的各种 网站 和应用程序编程接口 (API)。但是,API 的免费版本是有限的。使用API​​ 时,数据格式不同于通常的网络爬虫,即JSON或XML。在标准的网络爬虫中,我们主要处理HTML格式的数据。

  来源:

  关于

  ChinaDeFi-是一个研究驱动的DeFi创新组织,我们也是一个区块链开发团队。每天,我们从全球500多个优质信息源的近900条内容中,寻找更深入、更系统的内容,同步到中国市场,以最快的速度提供决策辅助。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线