首页 > 编程语言 >Python爬虫之http协议复习

Python爬虫之http协议复习

时间:2022-10-14 12:34:33浏览次数:78  
标签:浏览器 请求 Python 爬虫 响应 url http


http协议复习

知识点
  • 掌握 http以及https的概念和默认端口
  • 掌握 爬虫关注的请求头和响应头
  • 了解 常见的响应状态码
  • 理解 浏览器和爬虫爬取的区别

一提起http协议,大家都会想起它是一个应用层协议,那么http协议跟爬虫有什么关系呢?请看下图:

Python爬虫之http协议复习_请求头

1. http以及https的概念和区别

HTTPS比HTTP更安全,但是性能更低

  • HTTP:超文本传输协议,默认端口号是80
  • 超文本:是指超过文本,不仅限于文本;还包括图片、音频、视频等文件
  • 传输协议:是指使用共用约定的固定格式来传递转换成字符串的超文本内容
  • HTTPS:HTTP + SSL(安全套接字层),即带有安全套接字层的超本文传输协,默认端口号:443
  • SSL对传输的内容(超文本,也就是请求体或响应体)进行加密
  • 可以打开浏览器访问一个url,右键检查,点击net work,点选一个url,查看http协议的形式

知识点:掌握 http以及https的概念和默认端口


2. 爬虫特别关注的请求头和响应头

2.1 特别关注的请求头字段

Python爬虫之http协议复习_python_02

http请求的形式如上图所示,爬虫特别关注以下几个请求头字段

  • Content-Type
  • Host (主机和端口号)
  • Connection (链接类型)
  • Upgrade-Insecure-Requests (升级为HTTPS请求)
  • User-Agent(浏览器名称)
  • Referer(页面跳转处)
  • Cookie(Cookie)
  • Authorization(用于表示HTTP协议中需要认证资源的认证信息,如前边web课程中用于jwt认证)

加粗的请求头为常用请求头,在服务器被用来进行爬虫识别的频率最高,相较于其余的请求头更为重要,但是这里需要注意的是并不意味这其余的不重要,因为有的网站的运维或者开发人员可能剑走偏锋,会使用一些比较不常见的请求头来进行爬虫的甄别

2.2 特别关注的响应头字段

Python爬虫之http协议复习_服务器_03

http响应的形式如上图所示,爬虫只关注一个响应头字段

  • Set-Cookie (对方服务器设置cookie到用户浏览器的缓存)

知识点:掌握 爬虫关注的请求头和响应头

3. 常见的响应状态码

  • 200:成功
  • 302:跳转,新的url在响应的Location头中给出
  • 303:浏览器对于POST的响应进行重定向至新的url
  • 307:浏览器对于GET的响应重定向至新的url
  • 403:资源不可用;服务器理解客户的请求,但拒绝处理它(没有权限)
  • 404:找不到该页面
  • 500:服务器内部错误
  • 503:服务器由于维护或者负载过重未能应答,在响应中可能可能会携带Retry-After响应头;有可能是因为爬虫频繁访问url,使服务器忽视爬虫的请求,最终返回503响应状态码

我们在学习web知识的时候就已经学过了状态码的相关知识,我们知道这是服务器给我的相关反馈,我们在学习的时候就被教育说应该将真实情况反馈给客户端,但是在爬虫中,可能该站点的开发人员或者运维人员为了阻止数据被爬虫轻易获取,可能在状态码上做手脚,也就是说返回的状态码并不一定就是真实情况,比如:服务器已经识别出你是爬虫,但是为了让你疏忽大意,所以照样返回状态码200,但是响应体重并没有数据。

所有的状态码都不可信,一切以是否从抓包得到的响应中获取到数据为准


知识点:了解 常见的响应状态码


4. 浏览器的运行过程

在回顾完http协议后,我们来了解以下浏览器发送http请求的过程

Python爬虫之http协议复习_python_04

4.1 http请求的过程

  1. 浏览器在拿到域名对应的ip后,先向地址栏中的url发起请求,并获取响应
  2. 在返回的响应内容(html)中,会带有css、js、图片等url地址,以及ajax代码,浏览器按照响应内容中的顺序依次发送其他的请求,并获取相应的响应
  3. 浏览器每获取一个响应就对展示出的结果进行添加(加载),js,css等内容会修改页面的内容,js也可以重新发送请求,获取响应
  4. 从获取第一个响应并在浏览器中展示,直到最终获取全部响应,并在展示的结果中添加内容或修改————这个过程叫做浏览器的渲染

4.2 注意:

但是在爬虫中,爬虫只会请求url地址,对应的拿到url地址对应的响应(该响应的内容可以是html,css,js,图片等)

浏览器渲染出来的页面和爬虫请求的页面很多时候并不一样,是因为爬虫不具备渲染的能力(当然后续课程中我们会借助其它工具或包来帮助爬虫对响应内容进行渲染)

  • 浏览器最终展示的结果是由多个url地址分别发送的多次请求对应的多次响应共同渲染的结果
  • 所以在爬虫中,需要以发送请求的一个url地址对应的响应为准来进行数据的提取

知识点:理解 浏览器展示的结果可以由多次请求对应的多次响应共同渲染出来,而爬虫是一次请求对应一个响应

5. 关于http协议的其它参考阅读


标签:浏览器,请求,Python,爬虫,响应,url,http
From: https://blog.51cto.com/u_15829196/5756223

相关文章

  • 三点共圆的计算代码(Python版本)
    已知三点坐标,计算圆心和半径defcalc_circle_center_and_radius(p1,p2,p3):x1=p1.xy1=p1.yz1=p1.zx2=p2.xy2=p2.yz2=p2......
  • HTTP1.0/HTTP1.1/HTTP2.0区别
    转载链接:https://vue3js.cn/interview/http/1.0_1.1_2.0.html#%E4%B8%80%E3%80%81http1-0一、HTTP1.0HTTP协议的第二个版本,第一个在通讯中指定版本号的HTTP协议版......
  • python切片;列表增删改查;列表(加乘法);列表表达式
         [开始:结束:步长] 倒序输出 2、列表增删改查(1)append()   一次只能添加一个元素 (2)extend()方法,一次课添加一个可迭代对象   extend()方法的参数必......
  • python-时间操作
    1. 获取当前时间importtime# 获取当前日期时间 返回值:当前日期时间defget_now_time():now=time.localtime()now_time=time.strftime("%Y-%m-......
  • Python人工智能经典算法之线性回归
    1.9k近邻算法总结[**]优点:1.简单有效2.重新训练代价底3.适合类域交叉样本4.适合大样本自动分类缺点:1.惰性学习2......
  • Python爬虫之数据提取概述
    数据提取概述知识点了解响应内容的分类了解xml和html的区别1.响应内容的分类在发送请求获取响应之后,可能存在多种不同类型的响应内容;而且很多时候,我们只需要响应内容中的......
  • Python爬虫之数据提取-selenium定位获取标签对象并提取数据
    selenium提取数据知识点:了解driver对象的常用属性和方法掌握driver对象定位标签元素获取标签对象的方法掌握标签对象提取文本和属性值的方法1.driver对象的常用属性和方......
  • Python爬虫之scrapy的日志信息与配置
    scrapy的日志信息与配置学习目标:了解scrapy的日志信息掌握scrapy的常用配置掌握scrapy_redis配置了解scrapy_splash配置了解scrapy_redis和scrapy_splash配合使用的配置1......
  • Python爬虫之数据提取-selenium的其它使用方法
    selenium的其它使用方法知识点:掌握selenium控制标签页的切换掌握selenium控制iframe的切换掌握利用selenium获取cookie的方法掌握手动实现页面等待掌握selenium控制浏......
  • Python爬虫之mongodb的聚合操作
    mongodb的聚合操作学习目标了解mongodb的聚合原理掌握mongdb的管道命令掌握mongdb的表达式1mongodb的聚合是什么聚合(aggregate)是基于数据处理的聚合管道,每个文档通过......