美文网首页
爬虫原理

爬虫原理

作者: 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. 如果再次访问相同网页,浏览器访问过程是一样的吗?


    相关文章

      网友评论

          本文标题:爬虫原理

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