网络爬虫简介

网络爬虫简介css

网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更常常的称为网页追逐者),是一种按照必定的规则,自动地抓取万维网信息的程序或者脚本。html

传统爬虫从一个或若干初始网页的URL开始,得到初始网页上的URL,在抓取网页的过程当中,不断从当前页面上抽取新的URL放入队列,直到知足系统的必定中止条件。聚焦爬虫的工做流程较为复杂,须要根据必定的网页分析算法过滤与主题无关的连接,保留有用的连接并将其放入等待抓取的URL队列。而后,它将根据必定的搜索策略从队列中选择下一步要抓取的网页URL,并重复上述过程,直到达到系统的某一条件时中止。程序员

另外,全部被爬虫抓取的网页将会被系统存贮,进行必定的分析、过滤,并创建索引,以便以后的查询和检索;对于聚焦爬虫来讲,这一过程所获得的分析结果还可能对之后的抓取过程给出反馈和指导。

如下为文章主要内容:
算法

网络爬虫简介

  1. 初见爬虫

使用Python中的Requests第三方库。在Requests的7个主要方法中,最常使用的就是get()方法,经过该方法构造一个向服务器请求资源的Request对象,结果返回一个包含服务器资源的额Response对象。经过Response对象则能够获取请求的返回状态、HTTP响应的字符串即URL对应的页面内容、页面的编码方式以及页面内容的二进制形式。浏览器

在了解get()方法以前咱们先了解一下HTTP协议,经过对HTTP协议来理解咱们访问网页这个过程到底都进行了哪些工做。安全

1.1 浅析HTTP协议服务器

超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为普遍的一种网络协议。全部的www文件都必须遵照这个标准。HTTP协议主要有几个特色:网络

支持客户/服务器模式
简单快捷:客服向服务器发出请求,只须要传送请求方法和路径。请求方法经常使用的有GET, HEAD, POST。每种方法规定了客户与服务器联系的类型不一样。因为HTTP协议简单,使得HTTP服务器的程序规模小,于是通讯速度快。
灵活:HTTP容许传输任意类型的数据对象。
无链接:无链接的含义是限制每次链接请求只处理一个请求。服务器处理完客户的请求,收到客户的应答后即断开链接,这种方式能够节省传输时间。
无状态:HTTP协议是无状态协议。无状态是指协议对于事物处理没有记忆能力。缺乏状态意味着若是后续处理须要前面的信息,则它必须重传,这样可能致使每次链接传送的数据量增大,另外一方面,在服务器不须要先前信息时它的应答就较快。ide

爬取过程
性能

  1. 首先浏览器拿到网址以后先将主机名解析出来。如 http://www.baidu.com/index.html 则会将主机名 www.baidu.com 解析出来。

  2. 查找ip,根据主机名,会首先查找ip,首先查询hosts文件,成功则返回对应的ip地址,若是没有查询到,则去DNS服务器查询,成功就返回ip,不然会报告链接错误。

  3. 发送http请求,浏览器会把自身相关信息与请求相关信息封装成HTTP请求 消息发送给服务器。

  4. 服务器处理请求,服务器读取HTTP请求中的内容,在通过解析主机,解析站点名称,解析访问资源后,会查找相关资源,若是查找成功,则返回状态码200,失败就会返回大名鼎鼎的404了,在服务器监测到请求不在的资源后,能够按照程序员设置的跳转到别的页面。因此有各类有个性的404错误页面。

  5. 服务器返回HTTP响应,浏览器获得返回数据后就能够提取数据,而后调用解析内核进行翻译,最后显示出页面。以后浏览器会对其引用的文件好比图片,css,js等文件不断进行上述过程,直到全部文件都被下载下来以后,网页就会显示出来。

HTTP请求,http请求由三部分组成,分别是:请求行、消息报头、请求正文。请求方法(全部方法全为大写)有多种,各个方法的解释以下:

GET 请求获取Request-URI所标识的资源
POST 在Request-URI所标识的资源后附加新的数据
HEAD 请求获取由Request-URI所标识的资源的响应消息报头
PUT 请求服务器存储一个资源,并用Request-URI做为其标识
DELETE 请求服务器删除Request-URI所标识的资源
TRACE 请求服务器回送收到的请求信息,主要用于测试或诊断
CONNECT 保留未来使用
OPTIONS 请求查询服务器的性能,或者查询与资源相关的选项和需求

GET方法应用举例:在浏览器的地址栏中输入网址的方式访问网页时,浏览器采用GET方法向服务器获取资源,eg:GET /form.html HTTP/1.1 (CRLF)

HTTP响应也是由三个部分组成,分别是:状态行、消息报头、响应正文。

状态行格式以下:HTTP-Version Status-Code Reason-Phrase CRLF,其中,HTTP-Version表示服务器HTTP协议的版本;Status-Code表示服务器发回的响应状态代码;Reason-Phrase表示状态代码的文本描述。

状态代码有三位数字组成,第一个数字定义了响应的类别,且有五种可能取值:

1xx:指示信息--表示请求已接收,继续处理
2xx:成功--表示请求已被成功接收、理解、接受
3xx:重定向--要完成请求必须进行更进一步的操做
4xx:客户端错误--请求有语法错误或请求没法实现
5xx:服务器端错误--服务器未能实现合法的请求

常见状态代码、状态描述、说明:

200 OK //客户端请求成功
400 Bad Request //客户端请求有语法错误,不能被服务器所理解
401 Unauthorized //请求未经受权,这个状态代码必须和WWW-Authenticate报头域一块儿使用
403 Forbidden //服务器收到请求,可是拒绝提供服务
404 Not Found //请求资源不存在,eg:输入了错误的URL
500 Internal Server Error //服务器发生不可预期的错误
503 Server Unavailable //服务器当前不能处理客户端的请求,一段时间后可能恢复正常。

eg:HTTP/1.1 200 OK (CRLF)

详细的HTTP协议能够参考这篇文章:
http://www.cnblogs.com/li0803/archive/2008/11/03/1324746.html

前面咱们了解了HTTP协议,那么咱们访问网页的过程,那么网页在是什么样子的。爬虫眼中的网页又是什么样子的。

网是静态的,但爬虫是动态的,因此爬虫的基本思想就是沿着网页(蜘蛛网的节点)上的连接的爬取有效信息。固然网页也有动态(通常用PHP或ASP等写成,例如用户登录界面就是动态网页)的,但若是一张蛛网风雨飘摇,蜘蛛会感到不那么安稳,因此动态网页的优先级通常会被搜索引擎排在静态网页的后面。

知道了爬虫的基本思想,那么具体如何操做呢?这得从网页的基本概念提及。一个网页有三大构成要素,分别是html文件、css文件和JavaScript文件。若是把一个网页看作一栋房子,那么html至关于房子外壳;css至关于地砖涂料,美化房子外观内饰;JavaScript则至关于家具电器浴池等,增长房子的功能。从上述比喻能够看出,html才是网页的根本,毕竟地砖颜料在市场上也有,家具电器均可以露天摆设,而房子外壳才是独一无二的。

下面就是一个简单网页的例子:

网络爬虫简介

而在爬虫眼里,这个网页是这样的:

网络爬虫简介

所以网页实质上就是超文本(hypertext),网页上的全部内容都是在形如“<>...</>”这样的标签以内的。若是咱们要搜集网页上的全部超连接,只需寻找全部标签中前面是"href="的字符串,并查看提取出来的字符串是否以"http"(超文本转换协议,https表示安全的http协议)开头便可。若是超连接不以"http"开头,那么该连接极可能是网页所在的本地文件或者ftp或smtp(文件或邮件转换协议),应该过滤掉。

在Python中咱们使用Requests库中的方法来帮助咱们实现对网页的请求,从而达到实现爬虫的过程。

1.2 Requests库的7个主要方法:

网络爬虫简介

最经常使用的方法get用来实现一个简单的小爬虫,经过示例代码展现:

网络爬虫简介

  1. Robots协议

Robots协议(也称为爬虫协议、机器人协议等)的全称是“网络爬虫排除标准”(Robots Exclusion Protocol),网站经过Robots协议告诉搜索引擎哪些页面能够抓取,哪些页面不能抓取。经过几个小例子来解读一下robots.txt中的内容,robots.txt默认放置于网站的根目录小,对于一个没有robots.txt文件的网站,默认是容许全部爬虫获取其网站内容的。

网络爬虫简介
若是是商业利益咱们是必需要遵照robots协议内容,不然会承担相应的法律责任。当只是我的玩转网页、练习则是建议遵照,提升本身编写爬虫的友好程度。

  1. 网页解析

BeautifulSoup尝试化平淡为神奇,经过定位HTML标签来格式化和组织复杂的网络信息,用简单易用的Python对象为咱们展现XML结构信息。

BeautifulSoup是解析、遍历、维护“标签树”的功能库。

3.1 BeautifulSoup的解析器

网络爬虫简介

BeautifulSoup经过以上四种解析器来对咱们获取的网页内容进行解析。使用官网的例子来看一下解析结果:

网络爬虫简介
首先获取以上的一段HTML内容,咱们经过BeautifulSoup解析以后,而且输出解析后的结果来对比一下:

网络爬虫简介

网络爬虫简介

更多介绍点击下面的连接

来源:
https://mp.weixin.qq.com/s/sqJxmMOcm0i_XN0vzlwwqQ

相关文章
相关标签/搜索