01 - Python爬虫入门前导知识

目录

1. 爬虫简介

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

2. HTTP和HTTPS协议

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

3. 网页信息分析


课堂笔记

1. 爬虫简介

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

  • 为何须要爬虫web

    • 为其余程序提供数据源 如搜索引擎(百度、Google等)、数据分析、大数据等等
  • Python作爬虫有哪些优点浏览器

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

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

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

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

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

    • 网页三大特征:app

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

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

通用爬虫和聚焦爬虫工做流程
在这里插入图片描述


2. HTTP和HTTPS协议

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

  • 通常数据通信可分为:

    • 获取对方IP
    • 获取应用程序端口
    • 规定通信协议
2.2 网络模型
  • 数据传输时,依次从应用层向下逐步封装到达物理层,而后经过网络传输给对方计算机,对方接收到数据后依次从物理层逐步解封直到应用层
    在这里插入图片描述
  • 改进后的网络参考模型
    在这里插入图片描述
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 安全套接层):主要用于网络安全传输协议,在传输层对网络链接加密,保证数据传输的安全性
    在这里插入图片描述
2.4 HTTP请求与响应

HTTP通讯由两部分构成:客户端请求消息服务器响应消息
在这里插入图片描述

  • 客户端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. 网页信息分析

在这里插入图片描述

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