爬虫(01)前导知识&网络协议 2020-12-07

1. 端口

每个应用程序都有独立的标识,这个标识就叫端口。如果要进行数据通信,必须要知道对方的应用程序端口。为了标志这些应用程序,对这些应用程序都用数字进行标识。这里用来标识的数字就叫端口,又叫逻辑端口。

2. 通讯协议

应用程序之间的通讯需要统一的规则,这个规则一般称为通讯协议。国际组织定义了通用的通讯规则,叫着TCP/IP协议。
所谓协议,就是通讯的两台计算机都必须遵守的规定或规则。
HTTP又叫超文本传输协议(是一种通讯协议),HTTP它的端口是80。

3. 网络模型

计算机网络是指由通信线路互相连接的许多自主工作的计算机构成的集合体,各个部件之间以何种规则进行通信,就是网络模型研究的问题。网络模型一般是指OSI七层参考模型和TCP/IP四层参考模型。这两个模型在网络中应用最为广泛。

3.1 OSI七层模型和TCP/IP四层模型

在这里插入图片描述
OSI七层模型:OSI(Open System Interconnection)开放系统互连参考模型是国际标准化组织(ISO)制定的一个用于计算机或通信系统间互联的标准体系。
TCP/IP四层模型:TCP/IP参考模型是计算机网络的祖父ARPANET和其后继的因特网使用的参考模型。
分层作用:方便管理
在这里插入图片描述

3.2 七层模型优点:

1、把复杂的网络划分成为更容易管理的层(将整个庞大而复杂的问题划分为若干个容易处理的小问题)
2、没有一个厂家能完整的提供整套解决方案和所有的设备,协议.
3、独立完成各自该做的任务,互不影响,分工明确,上层不关心下层具体细节,分层同样有益于网络排错

3.2.1 功能与代表设备

分层 名字 功能 工作在该层的设备
7 应用层 提供用户界面 QQ,IE 。应用程序
6 表示层 表示数据,进行加密等处理
5 会话层 将不同应用程序的数据分离
4 传输层 提供可靠或不可靠的传输,在重传前执行纠错 防火墙
3 网络层 提供逻辑地址,路由器使用它们来选择路径 三层交换机、路由器
2 数据链路层 将分组拆分为字节,并讲字节组合成帧,使用MAC地址提供介质访问,执行错误检测,但不纠错 二层交换机,网卡
1 物理层 在设备之间传输比特,指定电平,电缆速度和电缆针脚 集线器

3.2.2 互动:为什么现代网络通信过程中用TCP/IP四层模型,而不是用OSI七层模型呢?

OSI七层模型是理论模型,一般用于理论研究,他的分层有些冗余,实际应用,选择TCP/IP的四层模型。而且 OSI 自身也有缺陷,大多数人都认为 OSI 模型的层次数量与内容可能是最佳的选择,其实并非如此,其中会话层和表示层几乎是空的,而数据链路层和网络层包含内容太多,有很多的子层插入,每个子层都有不同的功能。

3.3 常见网络相关的协议

DNS:域名解析协议 www.baidu.com
SNMP(Simple Network Management Protocol)网络管理协议
DHCP(Dynamic Host Configuration Protocol)动态主机配置协议,它是在TCP/IP网络上使客户机获得配置信息的协议
FTP(File Transfer Protocol)文件传输协议,它是一个标准协议,是在计算机和网络之间交换文件的最简单的方法。
TFTP(Trivial File Transfer Protocol):小文件传输协议
HTTP(Hypertext Transfer Protocol ):超文本传输协议
HTTPS(Secure Hypertext Transfer Protocol):安全超文本传输协议,它是由Netscape开发并内置于其浏览器中,用于对数据进行压缩和解压操作.
ICMP(Internet Control Message Protocol):Internet控制信息协议,互联网控制报文协议
ping ip定义消息类型有:TTL超时、地址的请求与应答、信息的请求与应答、目的地不可到达
SMTP(Simple Mail Transfer Protocol):简单邮件传送协议
TELNET Protocol:虚拟终端协议
UDP(User Datagram Protocol):用户数据报协议,它是定义用来在互连网络环境中提供包交换的计算机通信的协议
TCP(Transmission Control Protocol):传输控制协议,是一种面向连接的、可靠的、基于字节流的传输层通信协议 log转发:开启一个协议:tcp(三次握手和四次挥手)

3.4 TCP协议和UDP协议的区别

(1)TCP协议:TCP(Transmission Control Protocol,传输控制协议)是面向连接的协议,在收发数据前,必须和对方建立可靠的连接。
(2)UDP协议:UDP 是User Datagram Protocol的简称, 中文名是用户数据报协议,是一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务
总结:TCP与UDP的区别:
1.基于连接与无连接;
2.对系统资源的要求(TCP较多,UDP少);
3.UDP程序结构较简单;UDP信息包的标题很短,只有8个字节,相对于TCP的20个字节信息包的额外开销很小。所以传输速度可更快
4.TCP保证数据正确性,UDP可能丢包;TCP保证数据顺序,UDP不保证。
场景:视频,语音通讯使用udp,或网络环境很好,比如局域网中通讯可以使用udp。 udp数据传输完整性,可以通过应用层的软件来校对就可以了。
tcp传文件,数据完整性要求高。

3.5 TCP和UDP 常用端口号名称

(1)TCP 端口分配
21 ftp 文件传输服务
22 ssh 安全远程连接服务
23 telnet 远程连接服务
25 smtp 电子邮件服务
53 DNS 域名解析服务,有tcp53也有用udp53端口传输
80 http web服务
443 https 安全web服务

4. HTTP的请求和响应

HTTP通信有两部分组成:

  • 客户端请求信息
  • 服务器响应信息
    在这里插入图片描述
    具体有如下步骤:
  • 当用户在浏览器地址栏输入一个URL地址并按回车以后,浏览器会向服务器发送一个HTTP请求, HTTP请求主要分为“get”和“post”两种方法。当我们的请求信息里含有账号密码等保密信息的时候用"post"方法,其他的一般用"get"方法。
  • 当我们在浏览器输入URL http://www.baidu.com 的时候,浏览器发送一个Request请求去获取 http://www.baidu.com 的html文件,服务器把Response文件对象发送回给浏览器。
  • 浏览器分析Response中的 HTML,发现其中引用了很多其他文件,比如Images文件,CSS文件,JS文件。 浏览器会根据已经得到的引用的请求代码,自动再次发送Request去获取图片,CSS文件,或者JS文件。
  • 当所有的文件都下载成功后,网页会根据HTML语法结构,完整的显示出来了。

4.1 客户端的Http请求

URL只是标识资源的位置,而HTTP是用来提交和获取资源。客户端发送一个HTTP请求到服务器的请求消息,包括以下格式:
请求行、请求头部、空行、请求数据
四个部分组成,下图给出了请求报文的一般格式。
在这里插入图片描述
一个典型的HTTP请求示例:

GET / HTTP/1.1
Host: www.baidu.com
Connection: keep-alive
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3
Sec-Fetch-Site: same-origin
Referer: https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=1&tn=baidu&wd=Python%20%20%E6%89%8B%E5%8A%A8%E5%9B%9E%E6%94%B6%E5%9E%83%E5%9C%BE&oq=Python%2520%25E6%2594%25B6%25E5%2588%25B0%25E5%259B%259E%25E6%2594%25B6%25E5%259E%2583%25E5%259C%25BE&rsv_pq=f5baabda0010c033&rsv_t=1323wLC5312ORKIcfWo4JroXu16WSW5HqZ183yRWRnjWHaeeseiUUPIDun4&rqlang=cn&rsv_enter=1&rsv_dl=tb&inputT=2315&rsv_sug3=48&rsv_sug2=0&rsv_sug4=2736
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Cookie: BIDUPSID=4049831E3DB8DE890DFFCA6103FF02C1;

4.2 请求方法

根据HTTP标准,HTTP请求可以使用多种请求方法。
HTTP 0.9:只有基本的文本 GET 功能。
HTTP 1.0:完善的请求/响应模型,并将协议补充完整,定义了三种请求方法: GET, POST 和 HEAD方法。
HTTP 1.1:在 1.0 基础上进行更新,新增了五种请求方法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法。
HTTP 2.0(未普及):请求/响应首部的定义基本没有改变,只是所有首部键必须全部小写,而且请求行要独立为 :method、:scheme、:host、:path这些键值对。

序号 方法 描述
1 GET 请求指定的页面信息,并返回实体主体。
2 HEAD 类似于GET请求,只不过返回的响应中没有具体的内容,用于获取报头
3 POST 向指定资源提交数据进行处理请求(例如提交表单或者上传文件),数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。
4 PUT 从客户端向服务器传送的数据取代指定的文档的内容。
5 DELETE 请求服务器删除指定的页面
6 CINNECT HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。
7 OPTIONS 允许客户端查看服务器的性能
8 TRACE 回显服务器收到的请求,主要用于测试或诊断。

5. 爬虫介绍

简单一句话就是代替人去模拟浏览器进行网页操作,以获取所需的数据。
为什么需要爬虫的,主要是为其他的应用程序提供数据源。企业要获取数据,一般有三种途径,一个是自己的数据,一个是购买数据,另外就是通过爬虫。Python : 支持模块多、代码简洁、开发效率高 (scrapy框架)等特点,明显优于其他语言。爬虫的分类有:

  • 通用爬虫: 如百度,谷歌等。
  • 聚焦爬虫: 根据既定的目标,有选择的抓取数据内容。

6. 几个概念

6.1 GET和POST

  • GET : 查询参数都会在URL上显示出来。
  • POST:查询参数和需要提交的数据是隐藏在form表单里的,不会在URL地址上显示出来。

6.2 URL的组成部分

URL:标称“统一资源定位符”。如:https://new.qq.com/omn/TWF20200/TWF2020032502924000.html
https: 协议
new.qq.com: 域名
port 端口号: 80 /new.qq.com 在他的后面有个 :80 可以省略
TWF20200/TWF2020032502924000.html 访问资源的路径
#anchor: 锚点用前端在做页面定位的
注意 : 在浏览器请求一个url,浏览器会对这个url进行一个编码。(除英文字母、数字和部分标识其他的全部使用% 加 十六进制码进行编码)
例如 : https://tieba.baidu.com/f?ie=utf-8&kw=%E6%B5%B7%E8%B4%BC%E7%8E%8B&fr=search

6.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

6.4 Refer

表明当前这个请求是从哪个url过来的。一般情况下可以用来做反爬的技术

6.5 常见状态码

  • 200 : 请求成功
  • 301 : 永久重定向
  • 302 : 临时重定向
  • 404 : 请求失败
  • 500 : 服务器内部请求

6.6 浏览器源代码上面常见的一些内容

我们在任何的网页上右键鼠标,可以在出现的菜单里选择“检查”。如图:
在这里插入图片描述

  • Elements : 元素
  • Console : 控制台 (打印信息)
  • Sources : 信息来源 (整个网站加载的文件)
  • NetWork : 网络工作(信息抓包) 能够看到很多的网页请求
    暂时先了解这么多。

猜你喜欢

转载自blog.csdn.net/m0_46738467/article/details/110873601
今日推荐