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

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

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

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

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

分别举个例子以示说明:

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

查看源码

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

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

在RegexBuddy 3 工具中

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

B

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

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

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

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

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

通过httpwatcher

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

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

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

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

这个页面查看源码 看不到保护焊有粉丝数 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】粉丝人信息

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

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

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的更多相关文章

  1. crawler_网络爬虫中编码的正确处理与乱码的解决策略

    转载: http://hi.baidu.com/erliang20088/item/9156132bdaeae8949c63d134 最近一个月一直在对nutch1.6版进行中等层次的二次开发,本来是 ...

  2. Python网络爬虫实战:根据天猫胸罩销售数据分析中国女性胸部大小分布

    本文实现一个非常有趣的项目,这个项目是关于胸罩销售数据分析的.是网络爬虫和数据分析的综合应用项目.本项目会从天猫抓取胸罩销售数据,并将这些数据保存到SQLite数据库中,然后对数据进行清洗,最后通过S ...

  3. 03.Python网络爬虫第一弹《Python网络爬虫相关基础概念》

    爬虫介绍 引入 之前在授课过程中,好多同学都问过我这样的一个问题:为什么要学习爬虫,学习爬虫能够为我们以后的发展带来那些好处?其实学习爬虫的原因和为我们以后发展带来的好处都是显而易见的,无论是从实际的 ...

  4. Python网络爬虫第一弹《Python网络爬虫相关基础概念》

    爬虫介绍 引入 之前在授课过程中,好多同学都问过我这样的一个问题:为什么要学习爬虫,学习爬虫能够为我们以后的发展带来那些好处?其实学习爬虫的原因和为我们以后发展带来的好处都是显而易见的,无论是从实际的 ...

  5. python 网络爬虫介绍

    一.网络爬虫相关概念 网络爬虫介绍 我们都知道,当前我们所处的时代是大数据的时代,在大数据时代,要进行数据分析,首先要有数据源,而学习爬虫,可以让我们获取更多的数据源,并且这些数据源可以按我们的目的进 ...

  6. Python爬虫《Python网络爬虫相关基础概念》

    引入 之前在授课过程中,好多同学都问过我这样的一个问题:为什么要学习爬虫,学习爬虫能够为我们以后的发展带来那些好处?其实学习爬虫的原因和为我们以后发展带来的好处都是显而易见的,无论是从实际的应用还是从 ...

  7. 03,Python网络爬虫第一弹《Python网络爬虫相关基础概念》

    爬虫介绍 引入 为什么要学习爬虫,学习爬虫能够为我们以后的发展带来那些好处?其实学习爬虫的原因和为我们以后发展带来的好处都是显而易见的,无论是从实际的应用还是从就业上. 我们都知道,当前我们所处的时代 ...

  8. 《Python网络爬虫相关基础概念》

    爬虫介绍 引入 之前在授课过程中,好多同学都问过我这样的一个问题:为什么要学习爬虫,学习爬虫能够为我们以后的发展带来那些好处?其实学习爬虫的原因和为我们以后发展带来的好处都是显而易见的,无论是从实际的 ...

  9. Python 基础教程 —— 网络爬虫入门篇

    前言 Python 是一种解释型.面向对象.动态数据类型的高级程序设计语言,它由 Guido van Rossum 于 1989 年底发明,第一个公开发行版发行于 1991 年.自面世以后,Pytho ...

随机推荐

  1. 阿里巴巴2014年校园招聘(秋季招聘)在线笔试--測试研发project师

    第一部分是单选题:40分钟答题时间. watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveG1oMTk1NA==/font/5a6L5L2T/fontsize/ ...

  2. 卓尼斯ZT-180点评

    卓尼斯ZT-180点评    ——我们出差,使用10”上网本发布,没有图片.并写冲忙.遗憾的不足之处. 一.购买 1.由于旅游.不想拿那台14"笔记本,台平板电脑.当时,选择的对象有维智A8 ...

  3. IIS URL Rewrite Module防盗链规则配置方法

    IIS版本:IIS 7.5 URL Rewrite组件:IIS URL Rewrite Module(http://www.iis.net/downloads/microsoft/url-rewrit ...

  4. int a[5]={1,2,3,4,5};printf(&quot;%d\n&quot;, *((int*)(&amp;a+1)-2);

    有说服力的笔试题有一定的期限,问:什么是结果,答案是4,为什么要挤? 我明白(不知道是不正确): &a这是一个数组指针,类型int[5],然后&a添加1其实a+sizeof(int)* ...

  5. java中的移位运算符:<<,>>,>>>总结(转)

    java中有三种移位运算符 <<      :     左移运算符,num << 1,相当于num乘以2 >>      :     右移运算符,num >& ...

  6. Linux 多学习过程

    1Linux流程概述 过程是,一旦运行过程中的程序,他和程序本质上的区别.程序是静态的,他奉命收集指令存储在磁盘上. 进程是动态的概念.他是执行者的程序,包括进程的动态创建.调度和消亡,是Linux的 ...

  7. 它们的定义dialog

    (1)你需要准备自己的自定义对话框样式,是一个布局文件 <?xml version="1.0" encoding="utf-8"? > <Li ...

  8. cocos2d-x lua 学习笔记(1) -- 环境结构

    Cocos2d-x 3.0超过环境的版本号来建立和前Cocos2d-x 2.0 差异较大的版本,从同时Cocos2d-x 3.0项目打包成apkAndroid的应用程序文件,步骤,构建环境有些乏味安德 ...

  9. 容易centos配置docker维修

    首先.由于docker实施需要linux某些组件支持本身和内核特性.所以一定要确保centos版本号大于6,和内核版本号大于2.6.32-431.可轻松升级centos6到最新的版本号. sudo y ...

  10. SQLServer 2008 技术内幕——T-SQL 查询 笔记

    原文:SQLServer 2008 技术内幕--T-SQL 查询 笔记 1.SQL编程有许多独特之处,如:面向集合的思维方式.查询元素的逻辑处理顺序.三值逻辑.如果不掌握这些知识就开始用SQL编程,得 ...