python之爬虫基本概念详细介绍

爬虫简介

  • 1.通讯协议
    • 1.1端口
    • 1.2通讯协议
  • 2.网络模型
    • 2.1 HTTPS是什么?
    • 2.2 SSL怎么理解?
  • 3.爬虫介绍
    • 3.1 什么是爬虫?
    • 3.2 为什么需要爬虫?
    • 3.3 企业获取数据的方式?
    • 3.4 Python 做爬虫的优势
    • 3.5 爬虫的分类
  • 4.几个概念
    • 4.1 GET和POST
    • 4.2 URL组成部分
    • 4.3 User-Agent 用户代理
    • 4.4 Refer
    • 4.5 状态码
  • 5. 抓包工具

1.通讯协议

1.1端口

我们想要进行数据通讯分几步?

  1. 找到对方ip
  2. 数据要发送到对方指定的应用程序上。为了标识这些应用程序,所以给这些网络应用程序都用数字进行了标识。为了方便称呼这个数字,叫做 端口。这里的端口 我们⼀般都叫做 ‘逻辑端口’
  3. 定义通讯规则。这个通讯规则我们⼀般称之为协议

举例:同一台主机上有许多程序都需要用到网络,比如,你一边浏览网页,一边与朋友在线聊天。当一个数据包从互联网上发来的时候,你怎么知道,它是表示网页的内容,还是表示在线聊天的内容?

也就是说,我们还需要一个参数,表示这个数据包到底供哪个程序(进程)使用。这个参数就叫做"端口"(port),它其实是每一个使用网卡的程序的编号。每个数据包都发到主机的特定端口,所以不同的程序就能取到自己所需要的数据。

"端口"是0到65535之间的一个整数,正好16个二进制位。0到1023的端口被系统占用,用户只能选用大于1023的端口。不管是浏览网页还是在线聊天,应用程序会随机选用一个端口,然后与服务器的相应端口联系。

1.2通讯协议

所谓协议就是指计算机通信网络中两台计算机之间进行通信所必须共同遵守的规定或规则。

国际组织定义了通用的通信协议 TCP/IP协议。
IP协议:规定网络地址的协议,叫做IP协议。它所定义的地址,就被称为IP地址。(有了MAC地址和IP地址,我们已经可以在互联网上任意两台主机上建立通信。
TCP协议:在数据包中加入端口信息的协议,以确定数据包是通向哪一个应用程序,以及数据包是否发送及确收。
HTTP协议:又叫做超文本传输协议(是⼀种通信协议),一个简单的请求-响应协议,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。请求和响应消息的头以ASCII码形式给出;而消息内容则具有一个类似MIME的格式。 HTTP 它的端口是 80。

2.网络模型

互联网分成若干层。即互联网的实现,分成好几层。每一层都有自己的功能,就像建筑物一样,每一层都靠下一层支持。
用户接触到的,只是最上面的一层(应用层),根本没有感觉到下面的层。要理解互联网,必须从最下层开始,自下而上理解每一层的功能。

  • 实体层:把电脑连接起来的物理手段。它主要规定了网络的一些电气特性,作用是负责传送0和1的电信号。如:光缆、电缆、双绞线、无线电波等方式。

  • 链接层:必须规定电信号的解读方式,在"实体层"的上方,确定了0和1的分组方式。包括:以太网协议、MAC地址、广播
    有了数据包的定义、网卡的MAC地址、广播的发送方式,"链接层"就可以在多台计算机之间传送数据了

  • 网络层:MAC地址不能够区分数据包是否在同一个子网,而且广播方式也只能发送在发送者所在的子网络。因而引入网络层,它的作用是引进一套新的地址,使得我们能够区分不同的计算机是否属于同一个子网络。这套地址就叫做"网络地址",简称"网址"。(IP协议、IP数据包、IP地址、ARP协议)

  • 传输层:建立"端口到端口"的通信。相比之下,"网络层"的功能是建立"主机到主机"的通信。只要确定主机和端口,我们就能实现程序之间的交流。(TCP协议)

  • 应用层: 应用程序收到"传输层"的数据,接下来就要进行解读。由于互联网是开放架构,数据来源五花八门,必须事先规定好格式,否则根本无法解读。
    "应用层"的作用,就是规定应用程序的数据格式。
    python之爬虫基本概念详细介绍_第1张图片

python之爬虫基本概念详细介绍_第2张图片

2.1 HTTPS是什么?

  • https=http+ssl,顾名思义,https是在http的基础上加上了SSL保护壳,信息的加密过程就是在SSL中完成的
  • https,是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL。

2.2 SSL怎么理解?

SSL也是⼀个协议主要⽤于web的安全传输协议
python之爬虫基本概念详细介绍_第3张图片
本文通讯协议、网络模型部分参考阮一峰老师的博客:互联网协议入门(一) - 阮一峰的网络日志
阮一峰老师的这篇博客真的通俗易懂,强推阅读。

3.爬虫介绍

3.1 什么是爬虫?

代替⼈去模拟浏览器进行网页操作

3.2 为什么需要爬虫?

为其他程序提供数据源 如搜索引擎(百度、Google等)、数据分析、大数据等等

3.3 企业获取数据的方式?

1.公司自有的数据
2.第三方平台购买的数据 (百度指数、数据堂)
3.爬虫爬取的数据

3.4 Python 做爬虫的优势

PHP : 对多线程、异步⽀持不太好
Java : 代码量大,代码笨重
C/C++ : 代码量大,难以编写
Python : 支持模块多、代码简洁、开发效率高 (scrapy框架)

3.5 爬虫的分类

  • 通用网络爬虫(General Purpose Web Crawler)
    爬行对象从一些种子 URL 扩充到整个 Web,主要为门户站点搜索引擎和大型 Web 服务提供商采集数据。 例如 baidu google yahu

  • 聚焦网络爬虫(Focused Web Crawler):根据既定的目标有选择的抓取某⼀特定主题内容

  • 增量式网络爬虫(Incremental Web Crawler): 指对下载网页采取增量式的更新和只爬行新产生的或者已经发生变化的网络爬虫

  • 深层网络爬虫(Deep Web Crawler): 指那些大部分内容不能通过静态链接获取的、隐藏在搜索表单后的,只有用户提交⼀些关键词才能获得的web页面 例如 用户登录注册才能访问的页面

更多爬虫分类介绍详见:爬虫大概分类

4.几个概念

4.1 GET和POST

GET : 查询参数都会在URL上显示出来(例如:百度查询字段)
在这里插入图片描述
在这里插入图片描述

POST : 查询参数和需要提交数据是隐藏在Form表单里,不会在URL地址上显示出来(例如:有道翻译)

python之爬虫基本概念详细介绍_第4张图片

4.2 URL组成部分

(1)URL: 统⼀资源定位符
https://new.qq.com/omn/TWF20200/TWF2020032502924000.html
(2)https: 协议
(3)new.qq.com: 主机名可以将主机理解为⼀台名叫news.qq.com 的机器。这台主机在 qq.com 域名下
(4)port 端口号: 80 /new.qq.com 在他的后面有个 :80 可以省略
(5)TWF20200/TWF2020032502924000.html 访问资源的路径
(6)#anchor: 锚点⽤前端在做页面定位的
如:百度百科里面的目录索引,网易云音乐上的分栏
(7)注意 : 在浏览器请求⼀个url,浏览器会对这个url进行⼀个编码。(除英文字母、数字和部分标识其他的全部使用% 加 十六进制码进行编码)

  • 例如 : https://tieba.baidu.com/f?ie=utf-
    8&kw===%E6%B5%B7%E8%B4%BC%E7%8E%8B==&fr=search
  • %E6%B5%B7%E8%B4%BC%E7%8E%8B = 海贼王
  • 注意三个%代表着一个汉字,如%E6%B5%B7:海、%E8%B4%BC:贼;%E7%8E%8B:王

4.3 User-Agent 用户代理

作用:记录用户的浏览器、操作系统等,为了让用户更好的获取HTML页面效果
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
(有些网站为了反爬,因而为了爬取,需要添加User-Agent)

Mozilla Firefox:(Gecko内核)火狐浏览器内核

4.4 Refer

表明当前这个请求是从哪个url过来的。⼀般情况下可以用来做反爬的技术
比如:拉勾网查职务,应该从首页查取(refer为首页)。如果发现不是从首页开始,可能会识别为爬虫

4.5 状态码

当浏览者访问一个网页时,浏览者的浏览器会向网页所在服务器发出请求。当浏览器接收并显示网页前,此网页所在的服务器会返回一个包含HTTP状态码的信息头(server header)用以响应浏览器的请求。
HTTP状态码的英文为HTTP Status Code。状态码一般有:

200 : 请求成功
301 : 永久重定向:永久移动。请求的资源已被永久的移动到新URI,返回信息会包括新的URI,浏览器会自动定向到新URI。今后任何新的请求都应使用新的URI代替
302 : 临时重定向:临时移动。与301类似。但资源只是临时被移动。客户端应继续使用原有URI。
403 : 服务器拒绝请求
404 : 请求失败(服务器⽆法根据客户端的请求找到资源(⽹⻚))
500 : 服务器内部请求

5. 抓包工具

  • Elements : 元素 网页源代码,提取数据和分析数据(有些数据是经过特殊处理的所以并不是都是准确的)
  • Console : 控制台 (打印信息)
  • Sources : 信息来源 (整个网站加载的文件)
  • NetWork : 网络工作(信息抓包) 能够看到很多的网页请求
    python之爬虫基本概念详细介绍_第5张图片

你可能感兴趣的:(python之爬虫基本概念详细介绍)