01 - Python爬虫入门前导知识

目录

1. 爬虫简介

  • 爬虫须知概念
  • 爬虫分类

2. HTTP和HTTPS协议

  • 端口
  • 网络模型
  • HTTP协议简介
  • HTTP请求与响应

3. 网页信息分析


课堂笔记

1. 爬虫简介

1.1 爬虫须知概念
  • ⽹络爬⾍(⼜被称为⽹⻚蜘蛛,⽹络机器⼈)就是模拟客户端发送⽹络请求, 接收请求响应,⼀种按照⼀定的规则,⾃动地抓取互联⽹信息的程序。 只要是浏览器能做的事情,原则上,爬⾍都能够做

  • 为什么需要爬虫

    • 为其他程序提供数据源 如搜索引擎(百度、Google等)、数据分析、大数据等等
  • Python做爬虫有哪些优势

    • PHP : 对多线程、异步支持不太好

    • Java : 代码量大,代码笨重

    • C/C++ : 代码量大,难以编写

    • Python : 支持模块多、代码简介、开发效率高 (scrapy框架)

  • Python如何爬取网页上的数据

    • 网页三大特征:

      • 网页都有自己唯一的URL
      • 网页均由HTML描述其内容
      • 网页都使用HTTP/HTTPS协议传输HTML数据
    • 爬虫设计思路:

      • 确定爬取的URL地址
      • 通过HTTP/HTTPS获取对应的HTML页面
      • 提取页面有用信息
1.2 爬虫分类
  • 通用爬虫,主要将网页内容下载到本地,如 谷歌、百度、雅虎
  • 聚焦爬虫,根据既定主题有选择地抓取特定内容
  • 增量式网络爬虫,对下载的内容采取增量式更新或只爬取更新或改变部分的爬虫
  • 深层网络爬虫,用于爬取一些隐藏在搜索表单后的、不可静态获取的网页内容,往往需要提交一些关键词才可获得 例如 登录后的页面内容

通用爬虫和聚焦爬虫工作流程
01 - Python爬虫入门前导知识_第1张图片


2. HTTP和HTTPS协议

2.1 端口
  • 当计算机之间进行数据通讯时,应用程序为相互识别而被分配的编号,即端口号,又称逻辑端口

  • 一般数据通讯可分为:

    • 获取对方IP
    • 获取应用程序端口
    • 规定通讯协议
2.2 网络模型
  • 数据传输时,依次从应用层向下逐步封装到达物理层,然后通过网络传输给对方计算机,对方接收到数据后依次从物理层逐步解封直到应用层
    01 - Python爬虫入门前导知识_第2张图片
  • 改进后的网络参考模型
    01 - Python爬虫入门前导知识_第3张图片
2.3 HTTP协议简介
  • 所谓协议,就是指计算机通信网络中两台计算机之间进行通信所必须共同遵守的规定或规则
  • 国际组织制定了通用的通讯协议 即TCP/IP协议(iPv4,iPv6)

  • HTTP协议(HyperText Transfer Protocol,超⽂本传输协议):因特网上应用最广泛的网络传输协议,基于TCP/IP来传输数据,默认端口 80
  • HTTPS(Hypertext Transfer Protocol over Secure Socket Layer):简单讲就是HTTP的安全版,在HTTP内部添加SSL层
  • SSL(Secure Sockets Layer 安全套接层):主要用于网络安全传输协议,在传输层对网络连接加密,保证数据传输的安全性
    01 - Python爬虫入门前导知识_第4张图片
2.4 HTTP请求与响应

HTTP通信由两部分构成:客户端请求消息服务器响应消息
01 - Python爬虫入门前导知识_第5张图片

  • 客户端HTTP请求

    • 请求格式:请求⾏、请求头部、空⾏、请求数据

    • HTTP请求主要分为 GET与POST方式

      • GET方法直接在URL后面添加参数,可以看见,保密性较差
      • POST方法将参数封装于form表单中,是不可见的,具有良好的保密性,而且长度无限定,主要用于登录、注册时密码的提交
    • URL(统一资源定位符)组成

      • 例如:https://new.qq.com/omn/TWF20200/TWF2020032502924000.html

        • https: 协议
        • new.qq.com: 主机名 可以将主机理解为一台名叫 news.qq.com 的机器。这台主机在 qq.com 域名下
        • port 端口号: 80 /new.qq.com 在他的后面有个 :80 可以省略
        • TWF20200/TWF2020032502924000.html 资源访问路径
      • 注意 : 在浏览器请求一个url,浏览器会对这个url进行一个编码。(除英文字母、数字和部分标识外,其他的全部使用% 加 十六进制码进行编码)

    • 常用请求报头

    • Host (主机和端⼝号)
      对应⽹址URL中的Web名称和端⼝号,⽤于指定被请求资源的Internet 主机和端⼝号,通常属于URL的⼀部分。

    • Connection (链接类型)
      表示客户端与服务连接类型

    • Upgrade-Insecure-Requests (升级为HTTPS请求)
      升级不安全的请求,意思是会在加载 http 资 源时⾃动替换成 https 请求,让浏览器不再显示https⻚⾯中的http请求警报。

    • User-Agent (浏览器名称)
      是客户浏览器的名称

    • Accept (传输⽂件类型)
      指浏览器或其他客户端可以接受的MIME(Multipurpose Internet Mail Extensions(多⽤途互联⽹邮件扩展))⽂件类型,服务器可以根据它判 断并返回适当的⽂件格式。

      */*:表示什么都可以接收。
      image/gif:表明客户端希望接受GIF图像格式的资源; Accept:text/html:表明客户端希望接受html⽂本。
      text/html, application/xhtml+xml;q=0.9, image/*;q=0.8:表示浏览器⽀持的 MIME 类型分别是 html⽂本、xhtml和 xml⽂档、所有的图像格式资源。

    • Referer (⻚⾯跳转处)
      表明产⽣请求的⽹⻚来⾃于哪个URL,⽤户是从该 Referer⻚⾯访问 到当前请求的⻚⾯。这个属性可以⽤来跟踪Web请求来⾃哪个⻚⾯,是从什么 ⽹站来的等。

    • Accept-Encoding (⽂件编解码格式)
      指出浏览器可以接受的编码⽅式。编码⽅式不同于⽂件格 式,它是为了压缩⽂件并加速⽂件传递速度。浏览器在接收到Web响应之后先 解码,然后再检查⽂件格式,许多情形下这可以减少⼤量的下载时间。

    • Accept-Language (语⾔种类)
      指出浏览器可以接受的语⾔种类,如en或en-us指英 语,zh或者zh-cn指中⽂,当服务器能够提供⼀种以上的语⾔版本时要⽤到。

    • Accept-Charset (字符编码)
      指出浏览器可以接受的字符编码。

    • Cookie
      浏览器⽤这个属性向服务器发送Cookie。Cookie是在浏览器中寄存 的⼩型数据体,它可以记载和服务器相关的⽤户信息

    • Content-Type (POST数据类型)
      POST请求⾥⽤来表示的内容类型。

    • User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36

  • 服务器HTTP响应

    • 响应格式:状态⾏ 、 消息报头 、 空⾏ 、 响应正⽂

    • 常用响应报头

    • Cache-Control (must-revalidate, no-cache, private)
      这个值告诉客户端,服务端不希望客户端缓存资源,在下次请求资源时,必须 要从新请求服务器,不能从缓存副本中获取资源。

    • Connection (keep-alive)
      这个字段作为回应客户端的Connection:keep-alive,告诉客户端服务器的 tcp连接也是⼀个⻓连接,客户端可以继续使⽤这个tcp连接发送http请求。

    • Content-Encoding (gzip)
      告诉客户端,服务端发送的资源是采⽤gzip编码的,客户端看到这个信息后, 应该采⽤gzip对资源进⾏解码。

    • Content-Type (text/html;charset=UTF-8)
      告诉客户端,资源⽂件的类型,还有字符编码,客户端通过utf-8对资源进⾏解 码,然后对资源进⾏html解析。通常我们会看到有些⽹站是乱码的,往往就是 服务器端没有返回正确的编码。

    • Date (Thu, 02 Jan 2020 06:32:55 GMT)
      这个是服务端发送资源时的服务器时间,GMT是格林尼治所在地的标准时间。 http协议中发送的时间都是GMT的,这主要是解决在互联⽹上,不同时区在相 互请求资源的时候,时间混乱问题。

    • 响应状态码

      • 100~199:表示服务器成功接收部分请求,要求客户端继续提交其余请 求才能完成整个处理过程。
      • 200~299:表示服务器成功接收请求并已完成整个处理过程。常⽤ 200(OK 请求成功)。
      • 300~399:为完成请求,客户需进⼀步细化请求。例如:请求的资源已 经移动⼀个新地址、常⽤ 302 (所请求的⻚⾯已经临时转移⾄新的url)、 307和304 (使⽤缓存资源)。
      • 400~499:客户端的请求有错误,常⽤404 (服务器⽆法找到被请求的⻚ ⾯)、403 (服务器拒绝访问,权限不够)。
      • 500~599:服务器端出现错误,常⽤500 (请求未完成。服务器遇到不可 预知的情况)。

4. 网页信息分析

01 - Python爬虫入门前导知识_第6张图片

  • Elements : 元素 网页源代码,提取数据和分析数据(有些数据是经过特殊处理的所以并不是都是准确的)
  • Console : 控制台 (打印信息)
  • Sources : 信息来源 (整个网站加载的文件)
  • NetWork : 网络工作(信息抓包) 能够看到很多的网页请求

你可能感兴趣的:(Python爬虫)