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

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之爬虫基本概念详细介绍

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

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.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⻚⾯ 例如 ⽤户登录注册才能访问的页面

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