端口
通讯过程
- 获取IP
- 数据发送到对方指定应用程序,为识别程序,对网络应用程序用数字进行标识,为了方便称呼这个数字,取名为端口,这里的端口我们一般叫做逻辑端口
- 通讯,定义通讯规则,这个通讯规则我们称之为协议
通讯协议
- 国际组织定义通用的通信协议TCP/IP协议
- 协议就是指计算机通讯网络中,两台计算机之间进行通信所必须共同遵守的规定或规则
- HTTP叫做超文本传输协议 HTTP端口为80
网络模型
- 数据封包:应用层→表示层→会话层→传输层→网络层→数据链路层→物理层
- 数据拆包:物理层→数据链路层→网络层→传输层→会话层→表示层→应用层
- 应用层:为数据添加独有的应用特征(数据封装)
- 表示层:添加表现形式,继续封装
- 会话层:继续封装
- 传输层:TCP/IP封装
- 网络层:IP地址
- 数据链路层:定义在单个链路上如何传输数据,功能:帧编码和误差纠正控制
- 物理层:为传输数据所需要的物理链路创建、维持、拆除,而提供具有机械的,电子的,功能的和规范的特性,物理层确保原始的数据可在各种物理媒体上传输
TCP/IP参考模型
- 应用层 表示层 会话层 统一为 应用层(http ssl)
- 传输层为传输层 TCP
- 网络层为网际层 IP
- 数据链路层与物理层为主机至网络层
https
- https=heep + ssl
- ssl 是一个协议 主要用于web安全传输
- http的升级版 更加安全
http请求与响应
- http通信由两部分组成:客户端请求消息与服务器响应消息
- 当⽤户在浏览器的地址栏中输⼊⼀个URL并按回⻋键之后,浏览器会向HTTP 服务器发送HTTP请求。HTTP请求主要分为“Get”和“Post”两种⽅法。
- 当我们在浏览器输⼊URL http://www.baidu.com 的时候,浏览器发送⼀个 Request请求去获取 http://www.baidu.com 的html⽂件,服务器把 Response⽂件对象发送回给浏览器。
- 浏览器分析Response中的 HTML,发现其中引⽤了很多其他⽂件,⽐如 Images⽂件,CSS⽂件,JS⽂件。 浏览器会⾃动再次发送Request去获取 图⽚,CSS⽂件,或者JS⽂件。
- 当所有的⽂件都下载成功后,⽹⻚会根据HTML语法结构,完整的显示出来了。
客户端的http请求
URL 只是识别资源的位置,而HTTP是用来提交和获取资源
客户端发送http请求到服务器的请求消息,包括以下方面:
- 请求⾏、请求头部、空⾏、请求数据
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15⼀个典型的HTTP请求示例
1 GET / HTTP/1.1
2 Host: www.baidu.com
3 Connection: keep-alive
4 Cache-Control: max-age=0
5 Upgrade-Insecure-Requests: 1
6 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKi t/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36
7 Sec-Fetch-Mode: navigate
8 Sec-Fetch-User: ?1
9 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,ima ge/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3
10 Sec-Fetch-Site: same-origin
11 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%9 E%83%E5%9C%BE&oq=Python%2520%25E6%2594%25B6%25E5%2588%25B0%25E5%2 59B%259E%25E6%2594%25B6%25E5%259E%2583%25E5%259C%25BE&rsv_pq=f5ba abda0010c033&rsv_t=1323wLC5312ORKIcfWo4JroXu16WSW5HqZ183yRWRnjWHa eeseiUUPIDun4&rqlang=cn&rsv_enter=1&rsv_dl=tb&inputT=2315&rsv_sug 3=48&rsv_sug2=0&rsv_sug4=2736
12 Accept-Encoding: gzip, deflate, br
13 Accept-Language: zh-CN,zh;q=0.9
14 Cookie: BIDUPSID=4049831E3DB8DE890DFFCA6103FF02C1;
爬虫简介
爬虫
爬虫
- 代替人进行模拟浏览器网页操作
为什么需要爬虫
- 为其他程序提供数据源
- 数据分析
- AI人工智能
企业获得数据的方式
- 公司自有数据
- 第三方平台数据
- 爬虫工程师获取数据
Python爬虫优势
- PHP:对多线程、异步支持不太好
- Java:代码量大,代码笨重
- C/C++:代码量大。代码笨重
- Python:支持多模块。代码简洁。开发效率高 scrapy框架
爬虫分类
- 通用网络爬虫:传统搜索引擎
- 聚焦式:根据既定目标有选择的抓取某一特定主体内容
- 增量式:针对更新和只爬取新生产或发生变化的网页爬虫
- 深层网络爬虫:不能通过静态链接获取的,隐藏在搜索表单后的,只有用户提交一些关键词才能获得的web。例如用户登录注册才能访问的页面
几个概念
get与post
- GET:查询参数都会在URL中显示出来
- POST:查询参数和需要提交数据实在隐藏Form表单里,不会在URL地址显示
URL组成部分
- URL:统一资源定位符
- https://new.qq.com/omn/20201013/20201013A0F25P00.html
- https网络协议
- new.qq.com 主机名
- omn/20201013/20201013A0F25P00.html 访问路径
- 锚点
- User-Agent 用户代理,记录用户浏览器。操作系统为了让用户获得更好的html页面效果
1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.75 Safari/537.36
- refer 表明当前请求是从哪个URL拿来的
1
Referer: https://new.qq.com/
- 状态码
- 200:请求成功
- 301:永久重定向
- 302:临时重定向
- 404:请求失败
- 500:服务器内部请求
- 抓包工具
- elements 元素
- console 控制台
- sources 信息源 整个网站加载的文件
- network 网络工作 网络请求记录