用python爬取东方财富网网页信息

自学Python已有3个月之多,浏览无数大神的佳作,收获颇丰。当初自学python就是为了学习爬虫,爬取网站上好看妹子的图片……[流口水][流口水]

言归正传,近期学习量化交易知识,发现东方财富网(eastmoney.com)提供的特色数据相当不错,在投资组合页面,看看周冠军,月冠军等排行榜上那诱人的红色数字,那要是我的操作该有多好啊。

东方财富网投资组合首页

后来一想,我可以把每周的排行榜爬取下来,选出比较厉害的人,跟踪学习别人的操作,那我是不是也可以在A股中分一杯羹呢?想想就诱人……

月度高手排行榜

说干就干,先分析下网页,点开月度高手页面,来到投资组合排行榜。在chorme浏览器中打开网页调试工具(按F12即可),重新加载页面,看到如下图所示

月度高手排行榜分析页面

在调试工具中,选择JS,可以看到网页加载过程中的各种数据。每个页面点开,也没发现什么有价值的信息。最后在Private_Rank_Sort.js的页面中发现url信息的蛛丝马迹,如上图红方框和红色箭头所指部分。这个url是不是我要找的排行榜的页面呢?于是保存Private_Rank_Sort.js页面,查看JS代码。

URL信息的组合

查看js代码,发现GetDat函数中的这个URL是由几部分组成,中间有两个变量type和callbackName。分析上下文可以看出callbackName是由字符串“CallBack”+type+8位随机数组成。那type变量的结构就是关键了,找到了type,整个URL的信息就能拼凑出来。继续在该文件中查找,在尾部发现这么一句:

var type=$(this).attr("sortvalue")

再后面是调用GetDat(type)函数

JS代码分析type

总算是找到type的出处了,那他的具体赋值呢。于是又开始搜索网页,最后再网页源码中找到了“sortvalue”属性的数据。如下图

网页源码

原来type=8101、8102、8104、8105、8106、8107分别代表不同的意思(怎么没有8103呢,我也不知道,不管它了,继续正题……)

取type一个值 8102 日收益吧,把URL拼凑出来

URL完整信息

把拼凑号的url地址复制到浏览器地址栏,回车。见证奇迹的时刻到了……

网站返回结果

一个Json结构的数据,拿来和网页对比一下,很容易猜出字典中Key的含义。

至此万里长征的第一步总算走完了,后面就可以用python中requests模块Get数据了。

总结:

1、分析网页最重要的是要先找到url地址。之后再去弄懂各个参数的具体含义,扩展获取更多的数据。

2、分析过程中要细心,有耐心,多用 查找 功能。找不到了再到网页源码中看看,说不定会有意想不到的收获。

3、异步加载数据的网页,一般在JS或XHR中取找url

4、善用web浏览器中的工具插件,我用的chrome浏览器,它的网页调试工具很好用,还有很多扩展插件,比如JSON-handle把json数据理清层次结构,CrapApi方便GET、POST各种带参数的url地址,即时查看返回数据,分析参数的作用

最后再说一下,我把爬取下来的排行榜数据进行筛选,选出几个活跃度高,周月年收益较高的,实时跟踪其调仓动作,跟买跟卖,收益还可以的,不得不佩服高手就是高手。哈哈

上张运行界面图

跟踪程序运行界面

(0)

相关推荐