去年,10月份写过一篇图文 「One」的投资价值分析,多半年过去了,回头看看当时的判断还是合理的。

投资这种事情需要有自己的策略,更需要理性。任何决策都需要以数据作为判断的基础,哪么是否还继续持有 ONE呢?

首先,看整个市场的环境,从我们每周日发布的数据来看,币圈这个市场还处于不温不火的状态。这个时候,我是不会动的,对 BTC、EOS 还是会采用定投的策略来积累这些数字资产。另外,我也会结合 BTC、ONE 的价格,以及 ONE 的返利数据去计算,如果按照当前的价格买入并持有 ONE,并按照现在的返利,其年化利率是多少,是否满足我的要求,如果满足就继续定投,如果不满足就拿着不动,等待机会。


以上是我的想法,但仅有想法是不够的,需要数据来做支撑。所以今天就带着大家来爬取 One 持有者返利数据,根据这份数据来为自己提供辅助决策。

网页上面我们已经看到了,其对应的网址是:

https://b1.run/one/holder/bonus

查看源代码,我们发现在源码中并不包含这些数据,断定该网站是采用“前后端分离”的方式开发,所以我们需要找到请求 JSON 数据的接口。

通过 chrome 浏览器的开发者工具,我们发现该入口为:

https://b1.run/api/graphql

通过不断的加载数据,我们发现,前50条数据的网络请求参数如下:

接下来50条数据的网络请求参数如下:

以此类推,我们发现主要是after:" "后面的参数不同,找到请求数据的规律就好办了。我们再来看看返回的数据。

从返回的Json数据,可看到我们需要的信息存储在 edges 集合中,通过 edge 内部的 node 结构变量来存储。


为了快速完成爬取 One 持有者返利数据的任务,我使用了两套开源代码,RestSharpNewtonsoft.Json

RestSharp

利用该开源代码可以得到网络请求之后的 Json 数据,其下载地址如下:

https://github.com/restsharp/RestSharp

Newtonsoft.Json

利用该开源代码可以对得到的 Json 数据进行反序列化,得到 C# 对应的类,其下载地址如下:

https://github.com/JamesNK/Newtonsoft.Json


Newtonsoft.Json 这套开源代码,我在 如何利用 C# 爬取「猫眼电影专业版:票房」数据! 以及 如何做一款「桌面版百度翻译」软件? 中使用过,以前网络请求部分都是通过 HttpWebRequest直接写的,这次偷懒使用了 RestSharp 这套开源代码。

如果大家对这两套开源代码感兴趣,给我留言,我再来写几篇图文介绍它们,下面来看看爬取 One 持有者返利数据的代码。

1. 构造One持有者返利数据的存储结构 JsonOne

public class JsonOne
{public Data data;
}public class Data
{public OneDailyStatisticHistory oneDailyStatisticHistory;
}public class OneDailyStatisticHistory
{public OneDailyStatistic oneDailyStatistic;
}public class OneDailyStatistic
{public List<Edges> edges;
}public class Edges
{public Node node;
}public class Node
{/// <summary>/// ONE 累计解冻 (ONE)  /// </summary>public double unfrozenOne;/// <summary>/// 总手续费折合(BTC)/// </summary>public double totalFeeBtc;/// <summary>/// 日期/// </summary>public string statisticalDate;/// <summary>/// 连续持有 1,000,000 ONE 预计返利折合(BTC)/// </summary>public double revenue100wBtc;/// <summary>/// 全平台各账户持有 ONE 平均值的总和(ONE)/// </summary>public double oneSnapshot24Avg;public double oneAvgPrice;public override string ToString(){return statisticalDate + "," + totalFeeBtc+ "," + unfrozenOne + ","+ oneSnapshot24Avg + ","+ revenue100wBtc;}
}

2. 构造请求的Body部分。

private string GetBody(int page)
{string temp = string.Empty;if (page == 1)temp = ",\"after\":\"NTA\"";else if (page == 2)temp = ",\"after\":\"MTAw\"";else if (page == 3)temp = ",\"after\":\"MTUw\"";string result = "{\"operationName\":null,\"variables\":{\"first\":50" + temp + "},"+ "\"query\":\"query($first: Int, $after: String, $last: Int, $before: String) "+ "{\\n oneDailyStatisticHistory {\\n oneDailyStatistic"+ "(first: $first, after: $after, last: $last, before: $before) "+ "{\\n edges {\\n cursor\\n node {\\n...OneDailyStatistic\\n"+ " __typename\\n        }\\n __typename\\n      }\\n "+ "pageInfo {\\n endCursor\\n startCursor\\n hasNextPage\\n "+ "hasPreviousPage\\n __typename\\n      }\\n "+ "__typename\\n    }\\n __typename\\n  }\\n}\\n\\n"+ "fragment OneDailyStatistic on OneDailyStatistic "+ "{\\n oneAvgPrice\\n oneSnapshot24Avg\\n statisticalDate\\n unfrozenOne\\n "+ "revenue100wBtc\\n totalFeeBtc\\n __typename\\n}\\n\"}";return result;
}

3. 获取One持有者返利数据列表List<Edges>

public List<Edges> GetOneData(int page)
{RestClient client = new RestClient("https://b1.run/api/graphql");RestRequest request = new RestRequest(Method.POST);request.AddHeader("cache-control", "no-cache");request.AddHeader("Content-Type", "application/json");request.AddParameter("application/json",GetBody(page),ParameterType.RequestBody);IRestResponse response = client.Execute(request);string str = response.Content;StringReader sr = new StringReader(str);JsonTextReader jsonReader = new JsonTextReader(sr);JsonSerializer serializer = new JsonSerializer();JsonOne one = serializer.Deserialize<JsonOne>(jsonReader);List<Edges> lst = one.data.oneDailyStatisticHistory.oneDailyStatistic.edges;return lst;
}

4. 呈现One持有者返利数据

为了后面的分析,我做了一个 Winform 来呈现爬取的数据,并把这些数据通过折线图可视化。


到此为止,如何利用 C# 爬取 One 持有者返利数据就介绍完了。怎么样是不是很好玩儿!希望我的思路能够给大家以启发。今天就到这里吧!See You!


相关图文

  • 我们能否效仿李笑来的投资策略?
  • 赚钱是刚需,如何正确的交易股票?
  • 如何利用 C# 开发「股票数据分析软件」(上)
  • 如何利用 C# 开发「股票数据分析软件」(中)
  • 如何利用 C# 开发「股票数据分析软件」(下)

如何利用 C# 爬取 One 持有者返利数据!相关推荐

  1. 技术图文:如何利用 C# 爬取 ONE 的交易数据?

    投资一个金融产品,最基本的就是拿到这个金融产品的交易数据,对这些数据进行可视化来判断趋势.去年,我在听 李笑来 讲区块链的课程上知道了 BigOne 这个由 INB 投资的交易所,而 ONE 是 Bi ...

  2. 利用python爬取58同城简历数据

    利用python爬取58同城简历数据 最近接到一个工作,需要获取58同城上面的简历信息(http://gz.58.com/qzyewu/).最开始想到是用python里面的scrapy框架制作爬虫.但 ...

  3. 利用python爬取58同城简历数据_利用python爬取58同城简历数据-Go语言中文社区

    利用python爬取58同城简历数据 最近接到一个工作,需要获取58同城上面的简历信息(http://gz.58.com/qzyewu/).最开始想到是用python里面的scrapy框架制作爬虫.但 ...

  4. 利用python爬取天气预报_python实现天气爬虫——利用xpath爬取七天天气预报数据...

    python实现天气爬虫--利用xpath爬取七天天气预报数据 import pandas as pd import lxml import requests import csv from lxml ...

  5. python爬取b站数据_如果利用Python爬取B站上千万数据?B站直播都是大屌萌妹吗?...

    粉丝独白 说起热门的B站相信很多喜欢玩动漫的,看最有创意的Up主的同学一定非常熟悉.我突发奇想学Python这么久了,为啥不用Python爬取B站中我关注的人,已经关注的人他们关注的人,看看全站里面热 ...

  6. 利用Crawlspider爬取腾讯招聘数据(全站,深度)

    需求: 使用crawlSpider(全站)进行数据爬取 - 首页: 岗位名称,岗位类别 - 详情页:岗位职责 - 持久化存储 代码: 爬虫文件: from scrapy.linkextractors ...

  7. python获取币安k线数据_如何利用Python 爬取币乎的数据

    1LSGO软件技术团队 贡献人:李金原 如果喜欢这里的内容,你能够给我最大的帮助就是转发,告诉你的朋友,鼓励他们一起来学习. If you like the content here, the gre ...

  8. 利用python爬取58同城简历数据_python爬虫程序 58同城二手交易信息爬取

    本脚本分为5部分: spider_main    主程序 url_manager    url管理器 html_downloader    网页下载器 html_parser    网页解析器 htm ...

  9. 利用python爬取_在知乎上利用Python爬取了三百万数据!服务器崩了!企业级大项目...

    请各位注意: 以下所有分析结果都基于我抓取到的这300万用户的个人信息,非权威分析,仅供参考. 数据抓取时间为2017年7月份,用户数据会随着时间推移而变化,所以该报告具有一定时效性. 知乎的用户个人 ...

最新文章

  1. [LeetCode] Single Number
  2. 英文数据集txt_YOLOv5在建筑工地中安全帽佩戴检测的应用(已开源+数据集)
  3. html溢出左右滚动,html-选项卡溢出时水平滚动
  4. 常见的排序算法二——希尔排序
  5. windows api学习笔记-键盘钩子
  6. appium示例代码python_appium+Python 脚本编写
  7. webhooks php,GitHub和WebHooks自动部署PHP项目
  8. mac m1 nvm 安装node版本失败
  9. 西电计科《算法分析与设计》上机(源码+实验报告+历次作业)(渗透问题+排序算法性能比较+地图路由+文本索引)(2019级 霍红卫老师)
  10. shell中大于号和小于号
  11. linux文件夹内JPG批量转PNG
  12. 2_linux-常用命令1
  13. SQL语句中将字符串转换为时间格式
  14. 软件公司 sun公司 Oracle公司
  15. Windows Server 2019存储池配置
  16. 阿里云域名购买和配置
  17. p5.js 编程基础学习合集【2】
  18. 会声会影 我们后惠无期
  19. 独家专栏 | 为什么国外的无人驾驶原型车,都选择混动车型?
  20. 四川省教育考试院计算机准考证打印,四川省教育考试网官网准考证打印

热门文章

  1. mysql获取删除的条数_如何从mysql表中删除数百万条记录而不会减速
  2. 如何提升自己的Web前端技术
  3. 干货:排名前 16 的 Java 工具类!
  4. 京东区块链白皮书解读, 做“链接器”,一次技术宣言
  5. 背水一战 Windows 10 (18) - 绑定: 与 Element 绑定, 与 Indexer 绑定, TargetNullValue, FallbackValue...
  6. centos 安装 NTFS支持
  7. PHP smarty缓存
  8. vim打开多窗口、多文件之间的切换
  9. 理解HTTP消息头【很完整,例子也很丰富】
  10. 被人恨,但感觉不错!