• 确保安装CefSharp软件包,相关安装步骤可以自行搜索
  • CefSharp相关信息可在网上搜索,在这里主要使用到它作为浏览器的功能
  • 思路:
    • 使用CefSharp打开相关网页,以http://fundf10.eastmoney.com/jjjz_004719.html为例,代码如下:
private void btn_Click(object sender, RoutedEventArgs e)
{web.Address = textBox.Text;
}
  • 相关网页打开之后可发现其历史基金数据在以下HTML代码中:
<div id="jztable"><table class="w782 comm lsjz"><thead><tr><th class="first">净值日期</th>                    <th>单位净值</th><th>累计净值</th><th>日增长率<img title="" id="jjjzTip" style="position: relative;top: 3px;left: 3px;" src="http://j5.dfcfw.com/image/201307/20130708102440.gif" data-placement="bottom" data-html="true" data-original-title="日增长率为空原因如下:<br>1、非交易日净值不参与日增长率计算(灰色数据行)。<br>2、上一交易日净值未披露,日增长率无法计算。"></th><th>申购状态</th><th>赎回状态</th><th class="tor last">分红送配</th></tr></thead><tbody><tr><td>2020-01-23</td><td class="tor bold">1.1168</td><td class="tor bold">1.1168</td><td class="tor bold red">0.71%</td>    <td>限制大额申购</td><td>开放赎回</td><td class="red unbold"></td></tr>... ...<tr><td>2019-12-26</td><td class="tor bold">1.0519                            </td><td class="tor bold">1.0519</td><td class="tor bold red">0.62%</td><td>开放申购</td><td>开放赎回</td><td class="red unbold"></td></tr>                </tbody></table></div>
  • 在分析网页的HTML内容发现,其历史基金一次性获取并不完整,需要通过AJAX反复获取。通过需要使用CefSharp的JS异步操作技术,模拟网页按键操作即可实现自动翻页功能。部分代码如下:
script =$"var btns = pagebar.getElementsByTagName(\"label\");" +$"for(var i=0; i<btns.length; i++)" +"{" +$"if(btns[i].getAttribute(\"value\")=={(next).ToString()})" +"{" +"btns[i].click();" +"break;" +"}" +"}";
web.GetBrowser().MainFrame.ExecuteJavaScriptAsync(script);
  • 翻页完成后,通过读取当前页面数据即可获得相关历史基金数据。代码如下:
web.GetBrowser().MainFrame.GetSourceAsync().ContinueWith(x =>
{if (!x.IsFaulted){Dispatcher?.Invoke(() => {_htmlDocument.LoadHtml(x.Result);var v = _htmlDocument.GetElementbyId("jztable");if (v != null){if (v.SelectNodes("table").Count != 0){var table = v.SelectNodes("table");if (table[0].SelectNodes("tbody").Count != 0){var tr = table[0].SelectNodes("tbody")[0].SelectNodes("tr");for(int trIdx=0; trIdx < tr.Count; trIdx++){var td = tr[trIdx].SelectNodes("td");win?.Dispatcher?.Invoke(() => {for (int tdIdx = 0; tdIdx < td.Count; tdIdx++){var innerText = td[tdIdx].InnerText;if (innerText.Contains("\n")){innerText = innerText.Substring(0, innerText.IndexOf('\n'));}win.textBox.Text += innerText + "\t";}win.textBox.Text += "\n";});}}}}});}
});
  • 爬取网页数据效果如下:

使用CefSharp动态爬取天天基金网历史基金数据——动态爬取(一)相关推荐

  1. 使用CefSharp动态爬取天天基金网历史基金数据——数据存储(二)

    初步爬取到需要的数据之后,需要将数据存储到外部文件中以方便数据处理.本文中采用Excel存储爬取到的数据内容.与本次设计的数据爬取采用C#中的DataGrid进行显示,爬取指定基金号码的历史基金数据, ...

  2. python爬取天天基金网所有基金数据

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取 python免费学习资 ...

  3. python爬取基金历史净值_Python爬取天天基金网历史净值数据

    type 类型,历史净值用lsjz表示 code 基金代码,六位数字 sdate 开始日期,格式是yyyy-mm-dd edate 结束日期,格式是yyyy-mm-dd per 一页显示多少条记录 为 ...

  4. python爬取天天基金_Python爬取天天基金网历史净值数据

    type 类型,历史净值用lsjz表示 code 基金代码,六位数字 sdate 开始日期,格式是yyyy-mm-dd edate 结束日期,格式是yyyy-mm-dd per 一页显示多少条记录 为 ...

  5. 使用requests库爬取天天基金网某基金从开始到现在的净值数据

    爬取基金从开始到现在的净值数据 打开天天基金网的基金数据 随便点开一个基金,发现每天的净值数据都在这个单位净值走势图中 按F12打开开发者工具,刷新后发现接口为http://fund.eastmone ...

  6. 集思录REITs基金数据python爬取写入EXCEL表

    本文主要讲述REITs基金相关内容, 封闭基金数据获取参见: 集思录封闭基金数据python爬取写入excel表 国债数据获取参见: 和讯网债券数据Python爬取保存成CSV文件之一 1.什么是RE ...

  7. 集思录封闭基金数据python爬取写入excel表

    本文是在之前文章"集思录REITs基金数据python爬取写入EXCEL表"的基础上写成的. 封闭式基金,是相对于开放式基金而言的,是指基金规模在发行前已确定,在发行完毕后和规定的 ...

  8. python爬取天天基金网全部基金的历史全部净值

    ** 天天基金网历史净值爬取 ** ** 1.认识天天基金网的数据接口 1,这是所有基金代码.基金名称简称的集合http://fund.eastmoney.com/js/fundcode_search ...

  9. python爬取基金股票_爬取天天基金网、股票数据

    1:首先,开始分析天天基金网的一些数据.经过抓包分析,可知: ./fundcode_search.js包含所有基金的数据,同时,该地址具有反爬机制,多次访问将会失败的情况. 2:同时,经过分析可知某只 ...

最新文章

  1. 《自然》发布最新科研指数:中美差距缩小,中科院居全球机构首位
  2. Linux下tar.xz压缩解压
  3. 基于 Lucene 的桌面文件搜索
  4. C# 将string 转换为二维码图片,然后转为base64字符串编码 。
  5. Linux的内存理解
  6. 一段挂起进程中所有线程的代码
  7. android系统如何自适应屏幕大小
  8. Django信号量实现用户密码修改
  9. 黑马程序员_io流详解
  10. docker 安装与常用命令与常用容器(containers)环境
  11. 厉害了我的Qunar!看我工程师写轮眼!
  12. 音视频编解码技术(二):AAC 音频编码技术
  13. Vb 6.0 ado连接mysql_VB使用ADO操作Access数据库
  14. Github上找到开源的《植物大战僵尸》代码分享~
  15. 微信小程序开发需要什么技术
  16. 伪随机数产生原理及用法
  17. Java(十三)集合类(2)
  18. 记一次生产数据库事故
  19. python anaconda环境配置_Anaconda安装与环境配置
  20. C++中的字符串流详解iostream,sstream

热门文章

  1. python实现excel函数_python操作excel
  2. Sublime Text个性化设置
  3. Redis搭建集群,三主三从集群模式
  4. 青春正能量 中兴发布千元4G拍照神器红牛V5手机
  5. 想接私活时薪再翻一倍,建议根据这几个开源的SpringBoot项目(含小程序)改改~...
  6. 华为服务器cpu是否支持虚拟化,处理器配置 - 华为服务器 Brickland平台 BIOS 参数参考 30 - 华为...
  7. 游戏心得:魔法门之英雄无敌6 人类战役心得
  8. 【Java面向对象】学习Java经典必刷题库
  9. 【BUG】RK3568屏幕90度旋转
  10. 实训汇编语言设计——生成一个口字