1. 爬虫简介
1.1 爬虫是什么?
什么是爬虫,如下是百度百科上的解析:html
不少人都将互联网比喻成一张很是大的网,将世界链接起来。若是说互联网是一张网,那么爬虫就像在网上爬的小虫子,经过网页的连接地址来寻找网页,经过特定的搜索算法来肯定路线,一般从网站的某一个页面开始,读取该网页的内容,找到该网页中的其余连接地址,而后经过这些连接地址寻找下一个网页,就这样一直循环下去,直到将该网站的全部网页所有抓取为止。 正则表达式
1.2 爬虫原理
发起请求:
使用http库向目标站点发起请求,即发送一个Request
Request包含:请求头、请求体等算法
接收响应:
若是服务器能正常响应,则会获得一个Response
Response包含:html,json,图片,视频等数据库
解析网页:
解析html数据:正则表达式,第三方解析库如Beautifulsoup,pyquery等
解析json数据:json模块
解析二进制数据:以b的方式写入文件json
存储资源:
数据库浏览器
1.3 发送请求
爬虫的第一个步骤就是对起始 URL 发送请求,以获取其返回的响应服务器
值得注意的是,发送请求实质上是指发送请求报文的过程网络
请求报文包括如下四个方面:请求行、请求头、空行和请求体。post
(1)请求行
请求行由请求方法、请求 URL 和 HTTP 协议版本 3 个字段组成,字段间使用空格分隔网站
请求方法:请求方法是指对目标资源的操做方式,常见的有 GET 方法和 POST 方法
GET:从指定的资源请求数据,查询字符串包含在 URL 中发送
POST:向指定的资源提交要被处理的数据,查询字符串包含在请求体中发送
请求 URL:请求 URL 是指目标网站的统一资源定位符 (Uniform Resource Locator,URL)
HTTP 协议版本:HTTP 协议是指通讯双方在通讯流程和内容格式上共同遵照的标准
(2)请求头
请求头被认为是请求的配置信息,如下列举出经常使用的请求头信息
User-Agent:包含发出请求的用户的信息,设置 User-Agent 经常使用于处理反爬虫
Cookie:包含先前请求的内容,设置 Cookie 经常使用于模拟登录
Referer:指示请求的来源,用于能够防止链盗以及恶意请求
(3)空行
空行标志着请求头的结束
(4)请求体
请求体根据不一样的请求方法包含不一样的内容
若是是get方式,请求体没有内容
若是是post方式,请求体是format data
1.4 接收响应
爬虫的第二个步骤就是获取特定 URL 返回的响应,以提取包含在其中的数据。
一样的,响应实际上是指完整响应报文,它包括四个部分:响应行、响应头、空行和响应体。
(1)响应行
响应行由 HTTP 协议版本、状态码及其描述组成。
HTTP 协议版本:HTTP 协议是指通讯双方在通讯流程和内容格式上共同遵照的标准。
状态码及其描述:
100~199:信息,服务器收到请求,须要请求者继续执行操做
200~299:成功,操做被成功接收并处理
300~399:重定向,须要进一步的操做以完成请求
400~499:客户端错误,请求包含语法错误或没法完成请求
500~599:服务器错误,服务器在处理请求的过程当中发生错误
(2)响应头
响应头用于描述服务器和数据的基本信息,如下列举出经常使用的响应头信息
Set-Cookie:设置浏览器 Cookie,之后当浏览器访问符合条件的 URL 时,会自动带上该 Cooike
(3)空行
空行标志着响应头的结束。
(4)响应体
响应体就是网站返回的数据,在下一个步骤中咱们须要对其进行分析处理。
1.5 解析网页
解析网页实质上须要完成两件事情,一是提取网页上的连接,二是提取网页上的资源。
(1)提取连接
提取连接实质上是指获取存在于待解析网页上的其余网页的连接。
网络爬虫须要给这些连接发送请求,如此循环,直至把特定网站所有抓取完毕为止。
(2)提取资源
提取数据则是爬虫的目的,常见的数据类型以下:
文本:HTML,JSON 等
图片:JPG,GIF,PNG 等
视频:MPEG-一、MPEG-2 和 MPEG4,AVI 等
最终,咱们能够对所得到的资源做进一步的处理,从而提取出有价值的信息。