RCurl来了--从数据抓取讲起

转载请注明出处啊喂!

http://blog.csdn.net/jansii/article/details/38585731



明确数据挖掘任务的具体需求之后,怎么进行数据分析呢?

数据抓取--无数据何以谈分析;

数据加工--大刀阔斧挖掘数据;

数据可视化--信息挖出来了,你总得让人民看得懂啊。


数据抓取

在互联网络的时代,信息如同大海般没有边际。甚至我们获取信息的方法已经发生改变:从传统的翻书查字典,继而变成现在,没有搜索引擎根本寸步难行。我们从信息匮乏的时代一下子走到了信息极大丰富今天。然而困扰我们的问题也日益明显,数据太多,信息稀疏被隐藏。因此,一个能够自动在互联网上抓取数据,并自动分拣、分析的工具有非常重要的意义。 

我们通过传统的搜索引擎所获得的信息,通常是通过网页的形式所展现的,这样的信息人工阅读起来自然亲切,但计算机却很难进行加工和再利用。而且检索到的信息量太大,我们很难在大量的检索结果中抽取出我们最需要的信息。


RCurl在一定程度上可以实现上述的功能。它还有一位盟友,XML,同一位作者开发,不过此程序包在Windows上的中文支持已被反复吐槽。

 

数据加工

不符合要求的数据主要是有残缺的数据、错误的数据、重复的数据三大类;

解决方法:

统一数据格式:加权、调整度量之类的方法,不然值在0.1附近的变量在另一个值在10000的变量面前实在是无力回天。

删除重复值、处理缺失字段、检查数据逻辑错误等

 

数据可视化主要旨在借助于图形化手段,清晰有效地传达与沟通信息。

涉及知识:数据可视化与信息图形、信息可视化以及统计学知识。


那RCurl是怎么运作的呢?

简单来说,我们利用这个包,做出必要设置来达到模拟浏览器的目的,接着处理来自HTTP服务器的响应流,再通过字符串处理、正则匹配等方法来提取数据。

那么我们要先知道客户端与服务器之间有怎样的交互过程,下面介绍一些基础知识。


#URL是什么

简而言之就是你想要访问的页面地址,其中包含了什么信息呢?

示例:http://login.sina.com.cn/signup/signin.php?entry=sso

其中1.http,是协议,一般省略;

  2.login.sina.com.cn,是服务器;

  3.80,是服务器上的网络端口号,一般省略;

  4.signup/signin.php,是路径;

  5.? entry=sso,是提交的参数(RCurl中某参数利用到这个部分,卖个关子先)。


#HTTP交互过程

图解:


请求信息包括:请求头,请求体,对应的响应信息包括响应头,响应体。

不妨用Firefoxlive http helper查看都有什么信息。


个中参数都代表什么含义呢?以下简要介绍。


--------客户端-------


#GET:与服务器交互的方法,最基本的有4种,分别是GET,POST,PUT,DELETE.一个URL地址用于描述一个网络上的资源,而HTTP中的GET, POST, PUT, DELETE就对应着对这个资源的查,改,增,删4个操作。

•   GET请求获取Request-URI所标识的资源

•   POST在Request-URI所标识的资源后附加新的数据

•   HEAD请求获取由Request-URI所标识的资源的响应消息报头

•   PUT请求服务器存储一个资源,并用Request-URI作为其标识

•   HEAD方法与GET方法几乎是一样的,对于HEAD请求的回应部分来说,它的HTTP头部中包含的信息与通过GET请求所得到的信息是相同的。利用这个方法,不必传输整个资源内容,就可以得到Request-URI所标识的资源的信息。该方法常用于测试超链接的有效性,是否可以访问,以及最近是否更新。


#HTTP 1.1:HTTP版本

HTTP1.1与HTTP1.0的主要区别在于,支持长连接(PersistentConnection)和请求的流水线(Pipelining)处理,在一个TCP连接上可以传送多个HTTP请求和响应,减少了建立和关闭连接的消耗和延迟。另外,HTTP/1.1中新增了24个状态响应码,增加对错误或警告信息的描述。


#Host(发送请求时,该报头域是必需的)

作用: 请求报头域主要用于指定被请求资源的Internet主机和端口号,它通常从HTTP URL中提取出来的


#User-Agent

作用:告诉HTTP服务器, 客户端使用的操作系统和浏览器的名称和版本.


#Accept

作用: 浏览器端可以接受的媒体类型,

例如:  Accept: text/html  代表浏览器可以接受服务器回发的类型为 text/html  也就是我们常说的html文档,如果服务器无法返回text/html类型的数据,服务器返回一个406错误(non acceptable)

例如  Accept: */*  代表浏览器可以处理所有类型


#Accept-Language

作用: 浏览器申明自己接收的语言


----------服务器---------


#200OK

作用:最常见响应状态码, 这表明该请求被成功地完成,所请求的资源发送回客户端


#Connection

例如: Connection: keep-alive   当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭。如果客户端再次访问这个服务器上的网页,会继续使用这一条已经建立的连接

例如:  Connection: close  代表一个Request完成后,客户端和服务器之间用于传输HTTP数据的TCP连接会关闭。当客户端再次发送Request,需要重新建立TCP连接


#Content-Type

作用:WEB服务器告诉浏览器自己响应的对象的类型和字符集


#Last-Modified

作用: 用于指示资源的最后修改日期和时间


#X-Powered-By:

作用:表示网站是用什么技术开发的,比如说PHP,asp.net

休息一下~先更到这里~
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值