如何利用 C# 爬取 One 持有者返利数据!
去年,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 持有者返利数据的任务,我使用了两套开源代码,RestSharp
和 Newtonsoft.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 持有者返利数据!相关推荐
- 技术图文:如何利用 C# 爬取 ONE 的交易数据?
投资一个金融产品,最基本的就是拿到这个金融产品的交易数据,对这些数据进行可视化来判断趋势.去年,我在听 李笑来 讲区块链的课程上知道了 BigOne 这个由 INB 投资的交易所,而 ONE 是 Bi ...
- 利用python爬取58同城简历数据
利用python爬取58同城简历数据 最近接到一个工作,需要获取58同城上面的简历信息(http://gz.58.com/qzyewu/).最开始想到是用python里面的scrapy框架制作爬虫.但 ...
- 利用python爬取58同城简历数据_利用python爬取58同城简历数据-Go语言中文社区
利用python爬取58同城简历数据 最近接到一个工作,需要获取58同城上面的简历信息(http://gz.58.com/qzyewu/).最开始想到是用python里面的scrapy框架制作爬虫.但 ...
- 利用python爬取天气预报_python实现天气爬虫——利用xpath爬取七天天气预报数据...
python实现天气爬虫--利用xpath爬取七天天气预报数据 import pandas as pd import lxml import requests import csv from lxml ...
- python爬取b站数据_如果利用Python爬取B站上千万数据?B站直播都是大屌萌妹吗?...
粉丝独白 说起热门的B站相信很多喜欢玩动漫的,看最有创意的Up主的同学一定非常熟悉.我突发奇想学Python这么久了,为啥不用Python爬取B站中我关注的人,已经关注的人他们关注的人,看看全站里面热 ...
- 利用Crawlspider爬取腾讯招聘数据(全站,深度)
需求: 使用crawlSpider(全站)进行数据爬取 - 首页: 岗位名称,岗位类别 - 详情页:岗位职责 - 持久化存储 代码: 爬虫文件: from scrapy.linkextractors ...
- python获取币安k线数据_如何利用Python 爬取币乎的数据
1LSGO软件技术团队 贡献人:李金原 如果喜欢这里的内容,你能够给我最大的帮助就是转发,告诉你的朋友,鼓励他们一起来学习. If you like the content here, the gre ...
- 利用python爬取58同城简历数据_python爬虫程序 58同城二手交易信息爬取
本脚本分为5部分: spider_main 主程序 url_manager url管理器 html_downloader 网页下载器 html_parser 网页解析器 htm ...
- 利用python爬取_在知乎上利用Python爬取了三百万数据!服务器崩了!企业级大项目...
请各位注意: 以下所有分析结果都基于我抓取到的这300万用户的个人信息,非权威分析,仅供参考. 数据抓取时间为2017年7月份,用户数据会随着时间推移而变化,所以该报告具有一定时效性. 知乎的用户个人 ...
最新文章
- [LeetCode] Single Number
- 英文数据集txt_YOLOv5在建筑工地中安全帽佩戴检测的应用(已开源+数据集)
- html溢出左右滚动,html-选项卡溢出时水平滚动
- 常见的排序算法二——希尔排序
- windows api学习笔记-键盘钩子
- appium示例代码python_appium+Python 脚本编写
- webhooks php,GitHub和WebHooks自动部署PHP项目
- mac m1 nvm 安装node版本失败
- 西电计科《算法分析与设计》上机(源码+实验报告+历次作业)(渗透问题+排序算法性能比较+地图路由+文本索引)(2019级 霍红卫老师)
- shell中大于号和小于号
- linux文件夹内JPG批量转PNG
- 2_linux-常用命令1
- SQL语句中将字符串转换为时间格式
- 软件公司 sun公司 Oracle公司
- Windows Server 2019存储池配置
- 阿里云域名购买和配置
- p5.js 编程基础学习合集【2】
- 会声会影 我们后惠无期
- 独家专栏 | 为什么国外的无人驾驶原型车,都选择混动车型?
- 四川省教育考试院计算机准考证打印,四川省教育考试网官网准考证打印
热门文章
- mysql获取删除的条数_如何从mysql表中删除数百万条记录而不会减速
- 如何提升自己的Web前端技术
- 干货:排名前 16 的 Java 工具类!
- 京东区块链白皮书解读, 做“链接器”,一次技术宣言
- 背水一战 Windows 10 (18) - 绑定: 与 Element 绑定, 与 Indexer 绑定, TargetNullValue, FallbackValue...
- centos 安装 NTFS支持
- PHP smarty缓存
- vim打开多窗口、多文件之间的切换
- 理解HTTP消息头【很完整,例子也很丰富】
- 被人恨,但感觉不错!