写在前面的话 :最近博主在学习网络爬虫的相关技术(基于 Python 语言),作为一个学习的总结,打算用博客记录下来,也希望和大家分享一下自己在学习过程中的点点滴滴,话不多说,让我们马上开始吧

一、爬虫基本简介

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

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

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

二、爬虫基本原理

下面的图片很好的展现了一般网络爬虫的基本过程,下面让我们来详细解释一下这张图片的含义吧

1、发送请求

爬虫的第一个步骤就是对起始 URL 发送请求,以获取其返回的响应

值得注意的是,发送请求实质上是指发送请求报文的过程

请求报文 包括以下四个方面:请求行、请求头、空行和请求体

但是,往往在使用 Python 相关的网络请求库发送请求时,只需关注某些特殊的部分即可,而非完整的请求报文,下面我们将以粗体的形式标识出我们需要特别关注的部分

(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,则此项为待提交的数据(即表单数据)

2、获取响应

爬虫的第二个步骤就是获取特定 URL 返回的响应,以提取包含在其中的数据

同样的,响应其实是指完整响应报文,它包括四个部分:响应行、响应头、空行和响应体

(1)响应行

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

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

状态码及其描述

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

(2)响应头

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

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

(3)空行

空行标志着响应头的结束

(4)响应体

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

3、解析网页

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

(1)提取链接

提取链接实质上是指获取存在于待解析网页上的其他网页的链接

网络爬虫需要给这些链接发送请求,如此循环,直至把特定网站全部抓取完毕为止

(2)提取资源

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

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

最终,我们可以对所获得的资源作进一步的处理,从而提取出有价值的信息

爬虫系列(一) 网络爬虫简介相关推荐

  1. Python网络爬虫——1、网络爬虫简介

    什么是网络爬虫 网络爬虫又称网络蜘蛛.网络蚂蚁.网络机器人,它可以自动化浏览网络中的信息,当然浏览信息的时候需要按照我们制定的规则进行,这些规则我们称之为网络爬虫算法.使用Python可以方便的编写出 ...

  2. Python 网络爬虫 001 (科普) 网络爬虫简介

    Python 网络爬虫 001 (科普) 网络爬虫简介 1. 网络爬虫是干什么的 我举几个生活中的例子: 例子一: 我平时会将 学到的知识 和 积累的经验 写成博客发送到CSDN博客网站上,那么对于我 ...

  3. python3.6网络爬虫_python3.6网络爬虫

    <精通Python网络爬虫:核心技术.框架与项目实战>--导读 前 言 为什么写这本书 网络爬虫其实很早就出现了,最开始网络爬虫主要应用在各种搜索引擎中.在搜索引擎中,主要使用通用网络爬虫 ...

  4. python爬虫程序-Python网络爬虫实战(一)快速入门

    本系列从零开始阐述如何编写Python网络爬虫,以及网络爬虫中容易遇到的问题,比如具有反爬,加密的网站,还有爬虫拿不到数据,以及登录验证等问题,会伴随大量网站的爬虫实战来进行. 我们编写网络爬虫最主要 ...

  5. python爬虫系列之初识爬虫

    python爬虫系列之初识爬虫 前言 我们这里主要是利用requests模块和bs4模块进行简单的爬虫的讲解,让大家可以对爬虫有了初步的认识,我们通过爬几个简单网站,让大家循序渐进的掌握爬虫的基础知识 ...

  6. python商业爬虫教程_廖雪峰老师的Python商业爬虫课程 Python网络爬虫实战教程 体会不一样的Python爬虫课程...

    廖雪峰老师的Python商业爬虫课程 Python网络爬虫实战教程 体会不一样的Python爬虫课程 1.JPG (53.51 KB, 下载次数: 1) 2019-8-9 08:15 上传 2.JPG ...

  7. 精通python网络爬虫-精通Python网络爬虫:核心技术、框架与项目实战

    -- 目录 -- 前言 第一篇 理论基础篇 第1章 什么是网络爬虫 1.1 初识网络爬虫 1.2 为什么要学网络爬虫 1.3 网络爬虫的组成 1.4 网络爬虫的类型 1.5 爬虫扩展--聚焦爬虫 1. ...

  8. 精通python网络爬虫-精通Python网络爬虫:核心技术、框架与项目实战 PDF

    给大家带来的一篇关于Python爬虫相关的电子书资源,介绍了关于Python.Python网络爬虫.Python核心技术.Python框架.Python项目实战方面的内容,本书是由机械工业出版社出版, ...

  9. 爬虫分类——通用网络爬虫、聚焦网络爬虫、增量式网络爬虫、深层网络爬虫

    爬虫分类 网络爬虫按照系统结构和实现技术,大致可以分为以下几种类型:通用网络爬虫.聚焦网络爬虫.增量式网络爬虫.深层网络爬虫. 实际的网络爬虫系统通常是几种爬虫技术相结合实现的 通用网络爬虫 通用网络 ...

最新文章

  1. CocoaPods 原理分享及遇到的问题改进
  2. C++ Primer 5th笔记(9)chapter9 顺序容器 vector 容器的自增长 容器适配器
  3. pixhawk 整体架构的认识
  4. vc2008使用技巧
  5. 组件注册_使用_命名规则_以及Nacos中给每个服务配置访问前缀---SpringCloud Alibaba_若依微服务框架改造---工作笔记004
  6. 属羊的人2021年冲太岁运势预测
  7. Windows 下安装Python包(Numpy)的错误:Unable to find vcvarsall.bat
  8. verlay虚拟化技术_Overlay 网络技术,最想解决什么问题?
  9. mysql双机备份最简单_简单实现mysql双机热备份
  10. j1900适合装哪版群晖_适合新人观看的威联通NAS设置流程详解攻略
  11. 如何一次将蓝牙耳机连接到多个设备
  12. AUTOSAR架构中的配置文件
  13. pycharm不显示一部分下划线和删除线(pep8,typo引起)
  14. 关于RECON-NG相关问题解决
  15. Hadoop技术博文祝大家新年快乐
  16. 二:统计基础:描述统计
  17. Python爬虫-BeautifulSoup
  18. 2018年算法工程师秋招经验贴(微软、华为、网易游戏、阿里offer)
  19. 随机变量的相关性与独立性
  20. connect() failed (10061: No connection could be made because the target machine actively refused it

热门文章

  1. Spring MVC 控制层model.addAllAttribute()和model.addAllAttributes()方法的区别
  2. HBM:跨重性精神疾病的动态功能连接研究
  3. phpernbsp;的鼓励nbsp;nbsp;microsoftnbsp;牵手php
  4. socket详解(附加C++编程实例讲解)
  5. [7]云计算相关-理解云计算|角色与边界|云使能技术|unit4云安全|云安全威胁|威胁作用者
  6. python反转一个整数、123变成321_python 反转整数
  7. 【科创人独家】远望资本创始人程浩:四旬少年的玩味儿人生,做投资玩王者皆需逆风坚守
  8. python 图片去重脚本
  9. 时序分析基本概念介绍RC Corner
  10. 【瑞萨MCU】e2 studio 灵活配置软件包 FSP 安装