zoukankan      html  css  js  c++  java
  • Python爬虫(一)—爬虫的预备知识(爬虫概念、HTTP与HTTPS、请求与响应)

    这篇博文,主要是结合CriseLYJ/Python-crawler-tutorial-starts-from-zero内关于Python爬虫的预备知识进行记录的。


    爬虫的定义、分类和流程

    • 爬虫定义
      • 网络爬虫(又被称为网页蜘蛛,网络机器人)就是模拟浏览器发送网络请求,接收请求响应,一种按照一定的规则,自动地抓取互联网信息的程序。
      • 爬虫就是模拟浏览器的行为,越像越好,越像就越不容易被发现。
      • 原则上,只要是浏览器(客户端)能做的事情,爬虫都能够做。
    • 爬虫的分类
      • 通用爬虫:通常指搜索引擎的爬虫
      • 聚焦爬虫:针对特定网站的爬虫
    • 爬虫的流程
      爬虫流程步骤如下:
      • 向起始url发送请求,并获取响应
      • 对响应进行提取
      • 如果提取url,则继续发送请求获取响应
      • 如果提取数据,则将数据进行保存
        爬虫流程图.png
    • robots 协议
      Robots 协议:网站通过 Robots 协议告诉搜索引擎哪些页面可以抓取,哪些页面不能抓取,但它仅仅是道德层面上的约束。例如百度资源搜索平台内关于robots的作用解释,其中最重要的也就是robots.txt可以告诉百度您网站的哪些页面可以被抓取,哪些页面不可以被抓取。

    HTTP

    • OSI七层网络模型
      网络模型图.jpg

    来自科来网络通讯协议图

    • HTTP概念
      HTTP(超文本传输协议)是应用层上的一种客户端/服务端模型的通信协议,它由请求和响应构成,且是无状态的。 协议:协议规定了通信双方必须遵守的数据传输格式,这样通信双方按照约定的格式才能准确的通信。 无状态:无状态是指两次谅解通信之间是没有任何联系的,每次都是一个新的连接,服务端不会记录前后的请求信息。
    • HTTP 请求流程
      1. List item
      2. 浏览器先向 IP 发起请求,并获取相应
      3. 在返回的响应内容(html)中,会带有 css、js、图片等 url 地址,以及 ajax 代码,浏览器按照响应内容中的顺序依次发送其他的请求,并获取相应的响应
      4. 浏览器每获取一个响应就对展示出的结果进行添加(加载),js,css 等内容会修改页面的内容,js也可以重新发送请求,获取响应
      5. 从获取第一个响应并在浏览器中展示,直到最终获取全部响应,并在展示的结果中添加内容或修改————这个过程叫做浏览器的渲染
        HTTP 请求流程.png
    • HTTP协议结构图
      http协议结构图.jpg
    • 请求url 地址格式
      http的url规则.jpg

    格式说明: scheme://host[:port]/path/…/[?query-string][#anchor]
    1. scheme:协议(例如:http, https, ftp)
    2. host:服务器的 IP 地址或者域名
    3. port:服务器的端口(如果是走协议默认端口,缺省端口80)
    4. path:访问资源的路径
    5. query-string:参数,发送给 http 服务器的数据
    6. anchor:锚(跳转到网页的指定锚点位置)

    • HTTP 请求
      • 格式
        请求协议格式.png
      • 案例
        请求协议案例.jpg

    HTTP请求

    根据 HTTP 标准,HTTP 请求可以使用多种请求方法。
    HTTP1.0 定义了三种请求方法: GET, POST 和 HEAD 方法。
    HTTP1.1 新增了五种请求方法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法。

    • 请求方式
    请求方式描述
    GET请求指定的页面信息,并返回实体主体。
    HEAD类似于 get 请求,只不过返回的响应中没有具体的内容,用于获取报头
    POST向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST 请求可能会导致新的资源的建立和/或已有资源的修改。
    PUT从客户端向服务器传送的数据取代指定的文档的内容
    DELETE请求服务器删除指定的页面。
    CONNECTHTTP/1.1 协议中预留给能够将连接改为管道方式的代理服务器。
    OPTIONS允许客户端查看服务器的性能。
    TRACE回显服务器收到的请求,主要用于测试或诊断。
    • 常见的请求头
    请求头作用
    CookieCookie
    User-Agent浏览器名称
    Referer页面跳转处
    Host主机和端口号
    Connection链接类型
    Upgrade-Insecure-Requests升级为 HTTPS 请求
    Accept传输文件类型
    Accept-Encoding文件编解码格式
    x-requested-with : XMLHttpRequestajax 请求

    点击查看更多:CriseLYJ/Python-crawler-tutorial-starts-from-zero 或是掘金文章:关于常用的http请求头以及响应头详解

    HTTP响应

    • 响应格式
      HTTP响应也由四个部分组成,分别是:状态行、消息报头、空行(回车符 + 换行符)和响应正文。
      响应格式.jpg
    • 响应头
    响应头作用
    Location这个头配合 302 状态码使用,告诉用户端找谁。
    Set-Cookie设置和页面关联的 Cookie
    Content-Type服务器通过这个头,回送数据的类型
    Server服务器通过这个头,告诉浏览器服务器的类型
    Content-Length服务器通过这个头,告诉浏览器回送数据的长度
    Connection服务器通过这个头,响应完是保持链接还是关闭链接
    • HTTP 响应状态码
    分类分类描述
    1**信息,服务器收到请求,需要请求者继续执行操作
    2**成功,操作被成功接收并处理
    3**重定向,需要进一步的操作以完成请求
    4**客户端错误,请求包含语法错误或无法完成请求
    5**服务器错误,服务器在处理请求的过程中发生了错误
     常见的状态码:
     - 200 - 请求成功
     - 301 - 资源(网页等)被永久转移到其它 URL
     - 404 - 请求的资源(网页等)不存在
     - 500 - 内部服务器错误
    

    点击查看更多关于响应头内容:CriseLYJ/Python-crawler-tutorial-starts-from-zero 或是掘金文章:关于常用的http请求头以及响应头详解
    点击查看更多关于响应状态码内容:百度百科-HTTP状态码

    HTTPS

    HTTP + SSL (安全套接字层),即带有安全套接字层的超本文传输协议,默认端口号:443,HTTP为默认80

    • HTTPS 作用
      在传输过程中对数据进行加密,防止中间路由器、交换机等中间的路由设备对数据进行篡改。
    • HTTPS工作流程
      HTTPS工作流程.jpeg
    • HTTP 与 HTTPS 优缺点
      • HTTP 因为不需要对数据进行加密所以性能更高,但是安全性差。
      • HTTPS 虽然安全性高,但是因为浏览器和服务器端需要对数据进行加解密,所以占用服务器资源。

    目前 HTTPS 是未来主流,微信小程序,iOS 客户端,android 客户端的接口提供都需要 HTTPS 接口支持。
    更多可以查看:https和http的主要区别

    个人博客:Loak 正 - 关注人工智能及互联网的个人博客
    文章地址:Python爬虫(一)—爬虫的预备知识(爬虫概念、HTTP与HTTPS、请求与响应)

    千与千寻.jpg

  • 相关阅读:
    第三章:使用listview控件展示数据
    第一章:初识Windows程序
    java MySQL数据库编程 第四章 高级查询(二)
    java MySQL数据库编程 第三章:高级查询(一)
    java MySQL数据库编程 第二章 :初识MySQL
    java MySQL数据库编程 第一章 数据库的设计
    波导缝隙天线
    微带天线读书计划(二)-Microstrip Antenna Design Handbook by Ramesh Garg etc.in 2001
    微带天线读书计划(三):MICROSTRIP AND PRINTED ANTENNAS by Debatosh Guha in 2011
    微带天线读书(一): Microstrip Antennas: The Analysis and Design of Microstrip Antennas and Arrays
  • 原文地址:https://www.cnblogs.com/l0zh/p/13739741.html
Copyright © 2011-2022 走看看