美文网首页
爬虫原理

爬虫原理

作者: jdzhangxin | 来源:发表于2018-11-24 09:18 被阅读59次

一、基本问题

1. 爬虫是什么?

爬虫通常是网络爬虫的简称,是一种按照一定的规则,自动地请求抓取网页信息的程序或者脚本。

2. 爬虫能做什么?

只要能通过浏览器访问的数据都可以通过爬虫抓取。例如:文本、图片、视频等数据。

3. 爬虫的工作原理

模拟浏览器访问网页,获取网页中指定的数据。

  • 浏览器访问网页的过程:
    当你在浏览器中输入地址后,经过DNS服务器找到服务器主机,向服务器发送一个请求,服务器经过解析后发送给用户浏览器结果,包括html,js,css等文件内容,浏览器解析出来最后呈现给用户在浏览器上看到的结果。
  • 实践
    使用浏览器查看访问网页的过程

二、爬虫分类

  1. 通用爬虫
    无差别收集数据,提取关键字,并建立索引库。例如:搜索引擎,Google、Baidu、微软都有自己的爬虫。


  1. 聚焦爬虫
    针对特定的网站和特定内容采集数据。我们通常写的就是这类爬虫。


三、爬虫的基本流程

爬虫的基本流程本质就是模拟浏览器访问网页的过程。

  1. 发起请求
    向目标站点发起请求(Request),请求可能包含额外的header等信息,然后等待服务器响应。

  2. 获取响应
    服务器接受到请求后,返回一个正常响应(Response),响应的内容就是页面内容。响应类型主要是HTML、JSON字符串、二进制数据(图片、视频、音频、pdf、word)等。

  3. 解析内容
    根据响应内容类型的不同,处理方式也是不同的。

    No. 类型 处理方式
    1 HTML 使用正则表达式或者页面解析库进行解析
    2 JSON 直接转换为JSON对象解析
    3 二进制数据 保存或者进一步的处理
  4. 保存数据
    根据响应内容类型的不同,保存形式也是不同的。

    No. 类型 保存形式
    1 HTML、JSON 保存成文本(csv、xml、html)
    2 二进制数据 保存特定格式的文件
    3 所有格式 保存到数据库

四、Robots协议

特指网站中robots.txt文件,告诉爬虫什么可以爬取(Allow),什么不可以爬取(Disallow)。

  • 如何查看网站的robots.txt?
    域名/robots.txt
    
    例如
    https://www.baidu.com/robots.txt
    https://www.bilibili.com/robots.txt
    https://www.taobao.com/robots.txt
    

理论很枯燥,但是理论指导实践。


五、请求(Request)与响应(Response)

请求与响应
  • 请求(Request):浏览器发送消息给网站服务器的过程。
  • 响应(Response):服务器收到浏览器发送的消息后,根据浏览器消息内容做相应的处理,然后把消息回传给浏览器的过程。

请求(Request)和响应(Response)就是浏览器与服务器之间通信。我们日常通信方式有信件和Email。

信封格式


书信格式

Email格式

1. 请求(Request)

格式

实例

请求(Request)通常主要关注四部分:请求方式、请求URL、请求头、请求体

  1. 请求方式
    请求方式常用的主要有两种方式:GETPOST
    • GET:向指定的资源发出显示请求。
      使用GET方法应该只用在读取数据(查),而不应当被用于产生副作用的操作中(增删改)。

    • POST:向指定资源提交数据,请求服务器进行处理。
      (例如提交表单或者上传文件)。数据被包含在请求本文中。这个请求可能会创建新的资源或修改现有资源,或二者皆有。

案例

No. GET POST
1 Baidu 登录、注册
2 浏览商品 购买商品

重点

GETPOST的区别就是:GET的请求数据在URL中,POST则是存放在请求体中。

注意:重点问题答不上来会被面试官鄙视,甚至有些面试官以此为由被Pass掉。

  1. 请求URL
    URL(统一资源定位符 Uniform / Universal Resource Locator),是用于完整地描述Internet上网页和其他资源的地址的一种标识方法。通常等同于网址,是我们访问网站资源的地址。

    • 基本格式

      scheme://host[:port#]/path/…/[?query-string][#anchor]
      
    • 构成
      URL的格式由以下几个部分组成:

      No. 构成 说明
      1 scheme 协议(例如:http, https, ftp)
      2 host 服务器的IP地址或者域名
      3 port 服务器的端口(http默认端口80)
      4 path 访问资源的路径
      5 query-string 参数,发送给http服务器的数据
      6 anchor 锚(跳转到网页的指定锚点位置)
    • 实践

      https://www.baidu.com/s?wd=ABC
      
  1. 请求头
    请求头包含请求时的头部信息,如User-Agent,Host,Cookies等信息

  2. 请求体
    请求体是请求信息数据,如提交表单数据时候的表单数据。

实践
使用浏览器查看百度搜索时的请求(Request)信息。

2. 响应(Response)

格式

实例

所有HTTP响应的第一行都是状态行,依次是当前HTTP版本号,3位数字组成的状态码,以及描述状态的短语,彼此由空格分隔。

响应(Response)通常主要关注响应状态、响应头和响应体三部分。

  1. 响应状态
    响应状态是用3位数字组成的状态码表示。主要分为以下五类:

    No. 状态码 分类 说明
    1 1xx 信息响应 请求已被服务器接收,继续处理
    2 2xx 成功响应 请求已成功被服务器接收、理解、并接受
    3 3xx 重定向 需要后续操作才能完成这一请求
    4 4xx 客户端错误 请求含有词法错误或者无法被执行
    5 5xx 服务器错误 服务器在处理某个正确请求时发生错误

    几个重要状态码与状态短语

    No. 状态码与状态短语 说明
    1 200 OK 代表成功
    2 301 Moved Permanently 跳转
    3 404 Not Found 找不到页面
    4 502 Bad Gateway 服务器错误

    更多状态码参照HTTP响应代码

  2. 响应头
    响应头主要包含内容类型,类型的长度,服务器信息,设置Cookie

  3. 响应体
    响应体包含请求资源的内容,如网页HTML、JSON文本、二进制数据(图片、音频、视频)等。

练习
使用浏览器查看百度搜索时的响应(Response)信息。

3. 爬虫与请求(Request)与响应(Response)关系

测试

说明一下浏览器发送HTTP请求的过程

  1. 当用户在浏览器的地址栏中输入一个URL并按回车键之后,浏览器会向HTTP服务器发送HTTP请求。HTTP请求主要分为“Get”和“Post”两种方法。

  2. 当我们在浏览器输入URL http://www.baidu.com 的时候,浏览器发送一个Request请求去获取 http://www.baidu.com 的html文件,服务器把Response文件对象发送回给浏览器。

  3. 浏览器分析Response中的 HTML,发现其中引用了很多其他文件,比如Images文件,CSS文件,JS文件。 浏览器会自动再次发送Request去获取图片,CSS文件,或者JS文件。

  4. 当所有的文件都下载成功后,网页会根据HTML语法结构,完整的显示出来了。

拓展

  1. 如果再次访问相同网页,浏览器访问过程是一样的吗?


相关文章

  • Python 网络爬虫(一)

    网络爬虫的基本介绍 学习爬虫,我想主要从以下几个方面来切入 -爬虫的原理? -爬虫的作用? -爬虫的实现? -爬虫...

  • 【Python】Python3网络爬虫实战-15、爬虫基础:HT

    在写爬虫之前,还是需要了解一些爬虫的基础知识,如 HTTP 原理、网页的基础知识、爬虫的基本原理、Cookies ...

  • 爬虫-原理和流程

    爬虫原理 模拟浏览器发送网络请求,接收请求响应 爬虫分类 通用爬虫:搜索引擎的爬虫聚焦爬虫:针对特定网站的爬虫积累...

  • 基础爬虫

    爬虫流程:爬虫的原理:url -> html -> model (洗数据) -> 分析 依赖的包requests ...

  • 网络爬虫1-python学习32

    初识爬虫-爬虫的工作原理 什么是爬虫呢? 爬虫,从本质上来说,就是利用程序在网上拿到对我们有价值的数据。 爬虫能做...

  • Python3 爬虫介绍

    爬虫的基本原理 所谓爬虫就是一个自动化数据采集工具,你只要告诉它要采集哪些数据。其背后的基本原理就是爬虫程序向目标...

  • 学渣讲爬虫之Python爬虫从入门到出门(第一讲)

    目录 学渣讲爬虫之Python爬虫从入门到出门第一讲 目录 爬虫的常用形式 爬虫的基本原理 前期准备 简单爬虫 爬...

  • 1

    两种典型爬虫:通用网络爬虫、聚焦网络爬虫 通用网络爬虫实现原理与过程: 获取初始的URL 根据初始的URL爬取页面...

  • python进阶三:爬虫

    1.爬虫简介 1.1爬虫分类 1.1.1通用爬虫 通用搜索引擎(Search Engine)工作原理step1:抓...

  • 爬虫原理

    当自己需要数据的时候,能够分分钟就能获得,是不是一件很爽的事情。为了获得自己想要的数据,我们有必要弄懂爬虫原理。经...

网友评论

      本文标题:爬虫原理

      本文链接:https://www.haomeiwen.com/subject/utoffqtx.html