crawler_网络爬虫之数据分析_httpwatcher

系统 1864 0

所谓爬虫,首先要通过各种手段爬取到想要站点的数据。 web2.0之后,各种网络站点类型越来越多,早期的站点多为静态页面【html 、htm】,后来逐步加入 jsp。asp,等交互性强的页面。再后来随着js的兴起,也处于站点的美观和易于维护,越来越多的ajax异步请求方式数据站点。[不扯犊子了 ,马上上示例]

      参与工作时间不是很长,但工作期间一直做不同的爬虫项目。对常见的页面数据获取,有一些简单的认识。  接触到的页面分为三类。

  A 静态页面(数据在源码中直接可以获取到)

 B数据在基源码中没有,携带请求数据请求,在浏览器解析过程中,封装出含数据的源码

 C数据在浏览器解析后的源码中 没有,是通过页面的js函数,调用请求的js数据,显示的。

分别举个例子以示说明:

A ,这一类最简单,例如百度首页 ,现在想获取它的页面显示的链接信息

crawler_网络爬虫之数据分析_httpwatcher

查看源码

crawler_网络爬虫之数据分析_httpwatcher

不难发现页面中的链接信息在源码中都有体现,直接写正则

<a\s[^>]*?href\s*=[^\\]\s*['"]?([^'"\s>*?]*)[^>]*>[\s\S]*?(.*?)[</a>].+?

在RegexBuddy 3 工具中

crawler_网络爬虫之数据分析_httpwatcher

通过去group 1 [链接] group[Aname] 取得想要的数据,再通过队列循环排除依次取出百度链到的所有站点。

B

像企业类型信息查询网站 http://qyxy.baic.gov.cn/zhcx/zhcxAction!list.dhtml?op=cx

crawler_网络爬虫之数据分析_httpwatcher

想要获取通过程序输入企业名称  而查询出有关注册信息

不难发现当人工输入企业名称【2】 是 url【1】中的地址栏并没有变化,但是 【3】的响应结果却会随着我们查询的词不同而响应出不通的结果。

这就是上述的基页面不变,但是源码在请求后解析加载显示的不一样 。

对于这种情况 我们需要借助工具分析在我们在点击查询的操作时进行了那些与服务器的交互,

crawler_网络爬虫之数据分析_httpwatcher

通过httpwatcher 

 

通过分析不难发现,在点击查询的动作时,http请求 通过post方式发送了一个请求数据到给服务器端  zhcxModel.ent_name  百度。这样通过程序建立http链接时,我们把请求数据推送给服务器

 

然后再接收数据源码,这是源码中就含有查询出来的信息了,再通过A的方式,把想要的信息通过正则取出来。

C 例如土豆的用户信息页面 http://www.tudou.com/home/tui/u57045481t2.html 【随便拿了一个页面,若牵涉个人隐私,请联系我,我会立马更改】

 

想抓取土豆的粉丝数,关注数,及粉丝的详细信息

crawler_网络爬虫之数据分析_httpwatcher

这个页面查看源码 看不到保护焊有粉丝数 1327【1】等 及 粉丝的名称、链接等【2】信息

通过httpwatcher 重新请求页面 ,记录与服务器交互的数据,

不难发现 

粉丝数 信息 在请求时 发送的这个链接

http://www.tudou.com/my/tui/userInfo.html?uid=57045481&callback=jQuery16408569448299658144_1366125895716&_=1366125895774 中体现,再看蓝色圈中的数据即为该用户的id信息,在初始URL中也含有。这样就不难总结出 用户的关注人信息 数据 通过拼接 http://www.tudou.com/my/tui/userInfo.html?uid= + 用户ID + &callback=jQuery   即可获得。

再看

【2】粉丝人信息

crawler_网络爬虫之数据分析_httpwatcher

与上述方法差不多 ,探寻到发送的js请求,获取json数据 。

像翻页类型的数据,1327个服务器端没有一次请求把所有数据加载过来,

crawler_网络爬虫之数据分析_httpwatcher

http://www.tudou.com/my/tui/subme.html?pageSize=12&uid=57045481&currentPage=1&china=0&key=&callback=jQuery

观察粉丝人数的js请求地址 ,有两个参数pageSize currentPage 。pageSize 用来显示每一页显示多少个,currentPage用来显示当前页,页面中有总页数111,同时在刚探寻的js中也有总页数的信息,这样就很容易的通过变换currentPage 的值来依次通过A的方式去到用户的头像 ,姓名,等信息了。

不早了,明儿还得干活儿 ,今天就先到这儿了,这个目前接触到的一些类型数据分析,当然还有更复杂些的,接触面有限,等后续发现和学习我会陆续补充上的 。

欢迎指正和交流学习

爬虫技术交流_crawler QQ群:167047843

crawler_网络爬虫之数据分析_httpwatcher


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论