互联网金融爬虫怎么写-第三课 雪球网股票爬虫(ajax分析)

你们好啊,话说很久没有出来活动了,组织上安排写代码写了好久,终于又被放出来写教程了,感谢你们一直的支持和厚爱,我会一如既往的帮助你们完成爬虫工程师从入门到放弃的升华。web

好,Previous on  系列教程:ajax

互联网金融爬虫怎么写-第一课 p2p网贷爬虫(XPath入门)正则表达式

互联网金融爬虫怎么写-第二课 雪球网股票爬虫(正则表达式入门)chrome

工具要求与基础知识:json

工具要求:浏览器

1).神箭手云爬虫框架--这个是爬虫的基础;cookie

2).Chrome浏览器和Chrome的插件XpathHelper--这个用来测试Xpath写的是否正确;框架

3).Advanced REST Client--用来模拟提交请求。工具

基础知识:测试

本教程中设计到web的一些基础原理,若是不了解的,最好提早作一些功课。

开始ajax分析

我们废话很少说,接着上一课继续研究雪球网,雪球网经过狂拽的js请求,直接把咱们打回原形,辛辛苦苦分析半天的页面前功尽弃,不过没关系,我们想爬别人数据,就不能惧怕js渲染,前面的课程大多都经过种种方式绕过了js请求的方式来完成爬虫,那么这节课,就经过雪球网,来实实在在的面对一下咱们的这个没法回避的敌人--ajax。

首先依然打开chrome的开发者工具,点击network的标签。

注意事项:

1).当你打开一个页面,再点开network标签时是不会有信息的,咱们须要在打开的状况下,刷新一下页面;

2).为了防止页面忽然的跳转而丢失信息,必定要勾上preserved单选框。

具体设置以下图:

刷新页面以后,选中xhr小标签以后,能够清晰的看到一个ajax请求,咱们点开预览看下:

看到这个画面,是否是以为祖国的天空又蓝了一点?

首先,咱们先确保咱们能够经过直接访问拿到这个ajax请求,咱们先把这个请求的地址复制出来:

http://xueqiu.com/stock/cata/stocklist.json?page=1&size=30&order=desc&orderby=percent&type=11%2C12&_=1469588824728

而后,单独粘贴到浏览器的地址栏中,访问看看效果,为了保证明验的独立性,建议你们打开一个chrome的隐身窗口,这样能够防止以前的cookie的污染。

Oh no~  雪球的码农,咱们出来聊一下,我保证不打死大家~

这个时候,不少初学者甚至有必定经验的工程师都方了。没关系,其实只要不须要登陆,咱们都仍是来得及下班的。

通常来讲,限制来自于常见的三个状况:

1).cookie ; 2).referer ; 3).url中的参数

因为2)和3)容易测试,咱们通常先测试2)和3),测试方法就是参照咱们在浏览器中能正常访问到时的请求,删掉咱们可能以为不重要的参数,逐步测试。这里很是强调的是,咱们必须使用控制变量法,首先咱们须要重现可以成功获取数据的状况,而后在一个一个变量进行调整,最终将无关的参数所有去除,并找到最核心的参数,这里咱们还须要使用一个模拟提交请求的工具。咱们这里使用的是chrome的插件Advanced REST Client。同类型的工具不少,你们也能够根据本身的习惯挑选。

咱们先将cookie,referer和url完整的复制到请求中去,点击访问看看能不能拿到数据:

下面结果部分被截断了,结果返回的是正常的数据。

那么咱们先来肯定下2)和3)是否影响,经过删除referer以及url中不相关的参数,从新点击访问咱们能够知道,这些参数并不影响返回结果,那这个时候,就只剩下一个可能,就是cookie,固然这个多是咱们最不但愿看到了,固然cookie的问题依然分为两种状况:

1).http response返回的cookie设置;2).js对cookie的设置。

若是是1),那还没什么大不了的;若是是2)的话,那估计整我的都要不开心了。

第一件事,咱们依然要把cookie中不相关的参数,特别是一些统计代码的cookie删除掉,他们一般很长,很干扰,可是毫无做用。常见的百度统计有这样一些cookie: Hm_Lpvt开头和Hm_lvt开头的,固然通常Hm_开头的大几率百度统计的,其余的你们本身在作的过程当中去作总结,这里就不一一解释了。

删除以后发现,只要有xq_a_token这个cookie就能够返回正常的数据,那么咱们如今就找找这个cookie是在哪里设置的。

最简单的,先访问一下首页,看看response:

哈哈,能够看到reponse里面的set-cookie中已经有了xq_a_token这个参数,so easy!咱们把这个cookie加入到请求中去,顺利的请求到了数据,可见,在爬取这个ajax以前,只须要先访问一下首页就能够获取咱们须要的cookie值了。

最后咱们再回头看一下ajax的url,通过筛选剩余的url以下:

http://xueqiu.com/stock/cata/stocklist.json?page=1&size=30&order=desc&orderby=percent&type=11%2C12

很高兴的看到了page和size,另外还竟然有order和orderby,只能说雪球实在是太贴心,固然最后还有一个type,这个咱们多点几个分类就能够看出,这个是沪深一览的分类,相对应的还有美股一览和港股一览。这里咱们就不作详细介绍了。

分析就到这里,下一课,咱们会开始根据这一课的分析,完成整个代码的编写。

另外对爬虫感兴趣的童鞋能够加qq群讨论:566855261。

相关文章
相关标签/搜索