【爬虫基础】第二部分 爬虫基础理论 P2/3
上节内容回顾:【爬虫基础】第一部分 网络通讯 P1/3-CSDN博客
【爬虫基础】第一部分 网络通讯-Socket套接字 P2/3-CSDN博客
【爬虫基础】第一部分 网络通讯-编程 P3/3-CSDN博客
【爬虫基础】第二部分 爬虫基础理论 P1/3-CSDN博客
爬虫相关文档,希望互相学习,共同进步
风123456789~-CSDN博客
前言
1.知识点碎片化:每个网站实现的技术相似但是有区别,要求我们根据不同的网站使用不同的应对手段。主要是常用的一些网站爬取技术。
2.学习难度:入门比web简单,但后期难度要比web难,在于爬虫工程师与网站开发及运维人员的对抗。比如你写了爬虫但是被网站运维人员发现后添加反爬,那么就要解决反爬。即平台更新换代,爬虫策略需要实时更新。
3.学习特点:以摸个网站爬虫为讲解对象,即一个技术点的案例。
4.后续发展:要求掌握的东西多,工作中根据工作需要涉及到更多没有接触的知识。
5.法律层面:爬虫相关工作属于灰色地带,目前国内现行法律对于爬虫相关评判还没有明确制度。
6.建议:好记性不如烂笔头,建议多找网站进行爬取联系,同时做好笔记。
1.概述
爬虫通常会遵循一定的规则和算法,以确保能够高效地遍历互联网并收集到所需的数据。
本节章节:
第一节 爬虫理论原理
第二节 http协议(本文)
第三节 chrome浏览器抓包说明
第一节 爬虫理论原理 见:【爬虫基础】第二部分 爬虫基础理论 P1/3-CSDN博客
2. http协议
知识点:
1.网址url的构成
2.http协议介绍
3.浏览器访问服务器过程原理
4.http请求报文
GET请求
POST请求
5.http响应报文
6.http状态码
7.面试要点
8.爬虫robots协议
2.1 网络url 的构成
网址又称为URL(Uniform Resource Locator) ,全称为统一资源定位符,即网络资源地址。
如:https://www.baidu.com
网络url的构成:
https://index.baidu.com/v2/main/index.html#/trend/python?words=python
1.协议部分:用于指定如何访问资源,例如HTTP、HTTPS、FTP等。它告诉浏览器使用哪种协议来获取资源。
2.域名部分:用于标识资源所在的服务器或计算机的名称。它可以是域名或IP地址,帮助浏览器在网络中找到正确的服务器。如:www.baidu.com
3.路径资源部分:它可以是一个目录的路径,也可以是一个具体的文件名称。 /v2/main/index.html#/trend/python
4.请求参数部分:用于传递额外的信息给资源,锚点用于指向页面内的特定位置。
如GET请求,从?开始 words=python 查询参数
这些组成部分共同确保了URL能够准确地定位和访问网络上的资源。
2.2 http 协议的介绍
协议实际上是提前制定好的一套规范,大家都按照这个规范来,这样可以沟通无障碍。
http协议(超文本传输协议 Hypertext Transfer Protocol,HTTP):不仅能够传输文本数据,还可以传输 txt,mp3,mp4,img, zip等非文本数据。非文本数据通过链接加载的方式进行展示。也就是常说的网络数据。
重点:HTTP协议格式的数据是基于TCP传输协议的
http协议的使用离不开tcp
TCP传输协议 是用来保证网络中传输的数据的安全性的,HTTP协议 是用来规定这些数据的具体格式的。
2.3 浏览器访问服务器过程原理
当我们使用浏览器访问一个网站时,其实是基于 HTTP 协议,浏览器作为客户端向服务器端发送一次请求,而服务器端在接收到这次请求后,给浏览器反馈一个响应。
过程:请求--> dns解析---> 建立连接 -->访问资源--> 响应展示
1)在网址输入请求:https://www.baidu.com
dns解析服务:将域名解析成对应的 IP 地址+端口
2)发起请求:经过解析之后,浏览器会发起一个 TCP 的连接请求
3)建立连接:服务器接受请求后,通过三次握手建立连接
4)访问资源:根据查询参数访问服务器的资源
若没有查询参数,则访问这个IP+port的资源,首页资源客户端在确认建立连接成功后,向服务端发送 HTTP 请求格式的数据包
服务器端解析 HTTP 数据包,执行用户的这次请求并生成一个 HTTP 响应格式的数据包,发送给客户端
5)网页展示:浏览器收到服务器端的数据包后进行解析,再通过 HTML 格式呈现给用户
6)释放连接:客户端再通过四次握手释放连接
注意:基于TCP的三次握手
2.4 http 请求报文
HTTP 请求报文分类:
get 请求:获取web服务器的数据
post请求:提交本地数据给服务器get 请求没有请求体只有请求头。get请求的请求参数放在URL后加上一个"?"的后面,参数以
key=value
的形式传递,参数与参数之间使用"&"进行连接。
(1) get请求报文分析
三部分:
# 请求行 get请求方式,请求资源路径 http协议版本
# 请求头服务器的主机地址和端口号,默认80
和服务端保持长连接
可接受的数据类型
可接受的压缩格式
登录用户的身份标识
# 空行
get 请求体 如:
GET /signin?next=%2F HTTP/2\r\n
Host: www.zhihu.com\r\n
User-Agent: Mozilla/5.0\r\n
Accept: */*\r\n
Accept-Language: zh-CN\r\n
Accept-Encoding: gzip, deflate\r\n
Connection: keep-alive\r\n
Upgrade-Insecure-Requests: 1\r\n
Cache-Control: max-age=0\r\n
TE: trailers\r\n
\r\n
说明:
请求头中每项数据之间使用 "\r\n"结尾;
第一行是状态行,分别是请求方法(GET)、请求路径(/signin?next=%2F)、协议版本(HTTP/2);
其余所有行均以XXX: XXXX的格式表示;
最后需要一个"\r\n"的空行作为请求头结束的标志。
(2) post请求报文
四部分:
# 请求行 post请求方式,请求资源路径 http协议版本
# 请求头服务器的主机地址和端口号,默认80
和服务端保持长连接
告诉服务器请求的数据类型
客户端的名称
# 空行
# 请求体 请求参数,提交本地的数据部分
post 请求体,如:
POST /login HTTP/1.1\r\n
Host: 127.0.0.1:8888\r\n
User-Agent: Mozilla/5.0\r\n
Accept: */*\r\n
Accept-Language: zh-CN\r\n
Accept-Encoding: gzip, deflate\r\n
Content-Type: application/x-www-form-urlencoded\r\n
Content-Length: 29\r\n
Connection: keep-alive\r\n
\r\n
username=root&password=123456
说明:
1.请求头中每一行的后面都要加"\r\n"结尾;
2.第一行是状态行,分别是请求方法(POST)、请求路径(/login)、协议版本(HTTP/1.1);
3.请求头内的剩余内容均以XXX: XXXX的格式表示;
4.请求头最后需要一个"\r\n"的空行作为结束的标志;
5.放在请求体内的请求参数以key=value的形式传递,参数与参数之间使用"&"进行连接。
参考文章:解析HTTP请求报文(GET、POST)_get请求格式-CSDN博客
2.5 http 响应报文
四部分:
# 响应行 描述响应状态(响应状态码)http协议版本 状态码 状态描述
# 响应头 服务器名称、内容类型服务器的相应时间
# 空行
# 响应体 响应给客户端的数据
参考文章:http协议、URL、GET/POST请求报文及响应报文 - 长白山 - 博客园
2.6 http 状态码
状态码:
200:请求成功
302:重定向
重定向:访问a网站:正常情况下,获取a网站的响应
自动去对b网站发送请求,获取b网站的响应
400:请求错误,请求地址或参数有误(检查请求的地址,检查请求参数,检查请求头)
404:请求资源服务器不存在(请求有问题)
500:服务器错误,服务器内部源代码出现错误(存在bug)
2.7 爬虫 robots 协议
(1) 概述
爬虫robots协议:君子协议。告诉爬虫哪些信息可以采集,哪些信息不可以采集。
在编写网络爬虫时,遵守robots.txt协议是非常重要的,这是为了尊重网站所有者的意愿,避免对网站造成不必要的负担或损害。
robots.txt是一个文本文件,通常位于网站根目录下。
robots协议并不是一个规范,robots.txt不是命令,也不是防火墙,它是约定俗成的,如果将网站视为酒店里的一个房间,robots.txt就是主人在房间门口悬挂的“请勿打扰”或“欢迎打扫”的提示牌,这如同守门人无法阻止窃贼等恶意闯入者,所以并不能保证网站的隐私。
当一个搜索蜘蛛访问一个站点时,它会首先检查该站点根目录下是否存在robots.txt,如果存在,搜索机器人就会按照该文件中的内容来确定访问的范围;如果该文件不存在,所有的搜索蜘蛛将能够访问网站上所有没有被口令保护的页面。百度官方建议,仅当您的网站包含不希望被搜索引擎收录的内容时,才需要使用robots.txt文件。如果您希望搜索引擎收录网站上所有内容,请勿建立robots.txt文件。
(2)位置
例如 百度的robots.txt: https://baidu.com/robots.txt
User-agent: *
Disallow: /private/
Allow: /public/
说明:User-agent: *
表示这条规则适用于所有的爬虫,
Disallow: /private/
意味着所有的爬虫都不能抓取/private/
目录下的内容
Allow: /public/
允许抓取/public/
目录下的内容。

(3)注意事项
1.确保在抓取数据前检查robots.txt。
2.尊重网站的抓取频率限制。例如,某些网站可能规定每天只能抓取一定数量的页面。
3.避免对网站造成过大的负担,合理设置你的爬虫的爬取速度和频率。
3. 面试要点
(1)简述一个请求的生命周期
见《浏览器访问服务器过程原理》
事件顺序:
(1)浏览器获取输入的域名 www.baidu.com
(2)浏览器向DNS请求解析 www.baidu.com的IP地址
(3)域名系统DNS解析出百度服务器的IP地址
(4)浏览器与该服务器建立TCP连捷(默认端口号80)
(5)浏览器发出HTTP请求,请求百度首页
(6)服务器通过HTTP响应把首页文件发送给浏览器
(7)TCP连接释放
(8)浏览器将首页文件进行解析,并将web页显示给用户
涉及到的协议:
(1)应用层:HTTP(www访问协议),DNS(域名解析服务)
DNS解析域名为目的IP,通过IP找到服务器路径,客户端的服务器发起HTTP会话,然后通过传输层TCP协议封装数据包,在TCP协议基础上进行传输。
(2)传输层:TCP(为HTTP理供可靠的数据传输),UDP(DNS使用UDP传输)
(3)网络层:IP 为数据包选择路由,IP协议进行主要工作
(4)数据链路层:ICNP(提供网络传输过程中的差错监测),ARP(将本机的默认网关IP地址映射成物理MAC地址)
注意:法律和道德问题
在使用爬虫时,需要遵守一定的法律和道德准则,尊重网站的隐私政策和使用条款,确保合法和负责任地使用爬虫技术。
今天先到这里吧~~
预知后事如何,且听下回分解~ ok
项目管理--相关知识
项目管理-项目绩效域1/2-CSDN博客
项目管理-项目绩效域1/2_八大绩效域和十大管理有什么联系-CSDN博客
项目管理-项目绩效域2/2_绩效域 团不策划-CSDN博客
高项-案例分析万能答案(作业分享)-CSDN博客
项目管理-计算题公式【复习】_项目管理进度计算题公式:乐观-CSDN博客
项目管理-配置管理与变更-CSDN博客
项目管理-项目管理科学基础-CSDN博客
项目管理-高级项目管理-CSDN博客
项目管理-相关知识(组织通用治理、组织通用管理、法律法规与标准规范)-CSDN博客
Oracle其他文档,希望互相学习,共同进步
Oracle-找回误删的表数据(LogMiner 挖掘日志)_oracle日志挖掘恢复数据-CSDN博客
oracle 跟踪文件--审计日志_oracle审计日志-CSDN博客
ORA-12899报错,遇到数据表某字段长度奇怪现象:“Oracle字符型,长度50”但length查却没有50_varchar(50) oracle 超出截断-CSDN博客
EXP-00091: Exporting questionable statistics.解决方案-CSDN博客
Oracle 更换监听端口-CSDN博客