网络爬虫简介

写在前面的话 :最近博主在学习网络爬虫的相关技术(基于Python),作为一个学习的总结,打算用博客记录下来,一是作为复习和整理,二也是希望和大家分享分享自己在学习过程中遇到的各种有趣的事,话不多说,让我们马上开始吧 ^_^

一、爬虫基本简介

什么是网络爬虫,这里先引用一下百度百科上的解析:

网络爬虫是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本

说起网络爬虫,常常会有这样一个比喻:如果把互联网比喻成一张网,那么网络爬虫就可以认为是一个在网上爬来爬去的小虫子,它通过网页链接地址来寻找网页,通过特定搜索算法来确定路线,通常从网站某一个页面开始,读取网页的内容,找到在网页中的其它链接地址,然后通过这些链接地址寻找下一个网页,这样一直循环下去,直到把这个网站所有的网页都抓取完为止

二、爬虫基本原理

下图很好的展现了一般网络爬虫的基本过程,所以下面让我们来详细剖析一下这一张图呈现出来的深刻内涵吧

网络爬虫简介

1. 发送请求

爬虫的第一步是本地对起始URL发送请求以获取其返回的响应。值得注意的是,发送请求实质上是指发送请求报文的过程,但是,往往在使用Python相关库给特定URL发送请求时,我们只需要关注某些特定的值就好了,而非完整的请求报文。最终,出于知识的完整性的考虑,我们还是决定从完整的请求报文出发,而对于我们需要关心的值加下划线以示区别

下面分别讲述请求报文的四个组成部分:请求行、请求头、空行和请求体

网络爬虫简介

(1)请求行

请求行由请求方法、请求URL和HTTP协议版本3个字段组成,用空格分隔

请求方法 :请求方法是指对目标资源的操作方式,常见的有GET方法和POST方法

  • GET:从指定的资源请求数据,查询字符串包含在URL中发送
  • POST:向指定的资源提交要被处理的数据,查询字符串包含在请求体中发送

请求URL :请求URL是指目标网站的统一资源定位符,是该网站的唯一标识

HTTP协议版本 :HTTP协议是指通信双方在通信流程和内容格式上共同遵守的标准,这里只需有所了解即可

(2)请求头

请求头被认为是请求的配置信息,以下列举出常用的请求头信息(持续补充中)

  • User-Agent:包含发出请求的用户信息,设置User-Agent常用于处理反爬虫
  • Cookie:包含先前请求的内容,设置Cookie常用于模拟登陆
  • Referer:指示请求的来源,可以防止链盗以及恶意请求

(3)空行

空行标志着请求头的结束

(4)请求体

若请求方法为GET,则此项为空;若请求方法为POST,则此项填写待提交的数据(即表单数据)

2. 获取响应

爬虫的第二步是获取特定URL返回的响应以提取包含在其中的数据。同样的,为了知识的完整性,我们还是从完整的响应报文出发,而对于我们需要关心的值加下划线以示区别

下面分别讲述响应报文的四个组成部分:响应行、响应头、空行和响应体

网络爬虫简介

(1)响应行

响应行由HTTP协议版本、状态码及其描述组成

HTTP协议版本:HTTP协议指的是通信的双方在通信流程或内容格式上共同遵守的标准,这里只需有所了解即可

状态码及其描述

  • 100~199:信息,服务器收到请求,需要请求者继续执行操作
  • 200~299:成功,操作被成功接收并处理
  • 300~399:重定向,需要进一步的操作以完成请求
  • 400~499:客户端错误,请求包含语法错误或无法完成请求
  • 500~599:服务器错误,服务器在处理请求的过程中发生了错误

(2)响应头

响应头描述服务器和数据的基本信息,以下列举出常用的响应头信息(持续补充中)

  • Set-Cookie:设置浏览器cookie,以后当浏览器访问符合条件的url地址时,会自动带上这个cookie

(3)空行

空行标志着响应头的结束

(4)响应体

响应体就是响应的消息体,是网站返回的请求数据,我们接下来需要对其进行分析处理

3. 解析网页

解析网页(HTML)实质上需要完成两件事情,一是提取网页上的链接,二是提取网页上的资源

(1)获取链接

获取链接实质上是指获取存在于待解析网页上的其他网页链接,网络爬虫需要给这些链接发送请求,如此循环,直至把特定网站全部抓取完毕为止

(2)获取数据

获取数据则是爬虫的目的了,常见的数据列举如下:

  • 网页文本:HTML,Json等
  • 图片:JPG,GIF,PNG等
  • 视频:MPEG-1、MPEG-2和MPEG4,AVI等

最终我们对获取的数据进行适当的处理后就可以保存起来用于进一步的分析了

写在后面的话 :通过前面的学习,我们已经初步了解了网络爬虫的理论知识,下一篇文章我们将把理论运用到实践中,利用浏览器上的网页分析工具对网页进行抓包分析,谢谢大家