爬虫基础(2)网络爬虫的实现原理与技术

418次阅读
没有评论

文章目录

一. 爬虫技术实现原理

Web网络爬虫系统的功能是下载网页数据,为搜索引擎系统提供数据来源。很多大型的网络搜索引擎系统都被称为基于 Web数据采集的搜索引擎系统,比如 Google、Baidu。由此可见Web 网络爬虫系统在搜索引擎中的重要性。网页中除了包含供用户阅读的文字信息外,还包含一些超链接信息。Web网络爬虫系统正是通过网页中的超连接信息不断获得网络上的其它网页。正是因为这种采集过程像一个爬虫或者蜘蛛在网络上漫游,所以它才被称为网络爬虫系统或者网络蜘蛛系统,在英文中称为Spider或者Crawler。

爬虫的基本原理如下图所示:
爬虫基础(2)网络爬虫的实现原理与技术

简单来说,爬虫的过程分为四部分:

  • 发起请求:通过HTTP库向目标站点发起请求,即发送一个Request,请求可以包含额外的headers等信息,等待服务器响应。
  • 获取响应内容:如果服务器能正常响应,会得到一个Response,Response的内容便是所要获取的页面内容,类型可能有HTML,Json字符串,二进制数据(如图片视频)等类型。
  • 解析内容:得到的内容可能是HTML,可以用正则表达式、网页解析库进行解析。可能是Json,可以直接转为Json对象解析,可能是二进制数据,可以做保存或者进一步的处理。
  • 保存数据:保存形式多样,可以存为文本,也可以保存至数据库,或者保存特定格式的文件。

下面我们对上述前三个过程进行详述。

二. 发送请求

爬虫的第一个步骤就是对起始 URL 发送请求,以获取其返回的响应。值得注意的是,发送请求实质上是指发送请求报文的过程。请求报文包括:请求行、请求头、空行和请求体四个方面,如下图是请求报文的完整组成部分:
爬虫基础(2)网络爬虫的实现原理与技术
但是,我们往往在使用 Python 相关的网络请求库发送请求时,只需关注某些特殊的部分即可,而非完整的请求报文。下面我们就请求报文的各个部分做一下简单了解。

1. 请求行

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

  • 请求方法:对目标资源的操作方式,常见的有 GET 方法和 POST 方法,除此之外还有其他方法,如下表所示:

    序号方法描述
    1 GET 请求指定的页面信息,并返回实体主体。
    2 POST 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST 请求可能会导致新的资源的建立和/或已有资源的修改。
    3 HEAD 类似于 GET 请求,只不过返回的响应中没有具体的内容,用于获取报头。
    4 PUT 从客户端向服务器传送的数据取代指定的文档的内容。
    5 DELETE 请求服务器删除指定的页面。
    6 CONNECT HTTP/1.1 协议中预留给能够将连接改为管道方式的代理服务器。
    7 OPTIONS 允许客户端查看服务器的性能。
    8 TRACE 回显服务器收到的请求,主要用于测试或诊断。
  • 请求URL:指目标网站的统一资源定位符 (Uniform Resource Locator,URL)。

  • HTTP协议版本:指通信双方在通信流程和内容格式上共同遵守的标准

2. 请求头

请求头被认为是请求的配置信息,以下列举出常用的请求头信息:

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

3. 空行

空行标志着请求头的结束

4. 请求体

请求体根据不同的请求方法包含不同的内容。若请求方法为 GET,则此项为空;若请求方法为 POST,则此项为待提交的数据(即表单数据)

三. 获取响应内容

爬虫的第二个步骤就是获取特定 URL 返回的响应,以提取包含在其中的数据。同样的,响应其实是指完整响应报文,它包括四个部分:响应行、响应头、空行和响应体。如下图是响应报文的完整组成部分:
爬虫基础(2)网络爬虫的实现原理与技术

1. 响应行

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

  • HTTP 协议版本:HTTP 协议是指通信双方在通信流程和内容格式上共同遵守的标准

  • 状态码及其描述

    序号状态码分类分类描述
    1 100~199 信息,服务器收到请求,需要请求者继续执行操作
    2 200~299 成功,操作被成功接收并处理
    3 300~399 重定向,需要进一步的操作以完成请求
    4 400~499 客户端错误,请求包含语法错误或无法完成请求
    5 500~599 服务器错误,服务器在处理请求的过程中发生错误

2. 响应头

响应头用于描述服务器和数据的基本信息,以下列举出常用的响应头信息

  • Set-Cookie:设置浏览器 Cookie,以后当浏览器访问符合条件的 URL 时,会自动带上该 Cooike

其他响应头信息参考“HTTP 响应头信息

3. 空行

空行标志着响应头的结束。

4. 响应体

响应体就是网站返回的数据,在第三个步骤中我们需要对其进行分析处理。

四. 解析网页内容

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

1. 提取链接

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

2. 提取资源

提取数据则是爬虫的目的,常见的数据类型如下:

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

上述并未全面讲述爬虫学习中所需掌握的前端基础知识,文中我不再赘述,若想了解详细内容可参考此文:Web前端基础,或者可参考学习资料《Python爬虫开发与项目实战》,该书电子版可到下面的百度网盘链接中下载:链接:Python爬虫开发与项目实战 ,提取码:cn6f

神龙|纯净稳定代理IP免费测试>>>>>>>>天启|企业级代理IP免费测试>>>>>>>>IPIPGO|全球住宅代理IP免费测试

相关文章:

版权声明:Python教程2022-10-24发表,共计2330字。
新手QQ群:570568346,欢迎进群讨论 Python51学习