首页 > 编程语言 > python爬虫知识体系80页md笔记,0基础到scrapy项目高手,第(2)篇:http协议复习精讲

python爬虫知识体系80页md笔记,0基础到scrapy项目高手,第(2)篇:http协议复习精讲

时间:2023-10-30 16:03:05浏览次数:41  
标签:md http 请求 python 爬虫 响应 url 浏览器

本文主要学习一下关于爬虫的相关前置知识和一些理论性的知识,通过本文我们能够知道什么是爬虫,都有那些分类,爬虫能干什么等,同时还会站在爬虫的角度复习一下http协议。

完整体系笔记直接地址: 请移步这里


共 8 章,37 子模块,总计 5.6w+ 字


今天这一篇主讲:

爬虫基础

本阶段本文主要学习一下关于爬虫的相关前置知识和一些理论性的知识,通过本阶段的本文我们能够知道什么是爬虫,都有那些分类,爬虫能干什么等,同时还会站在爬虫的角度复习一下http协议。

http协议复习

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

  • 掌握 爬虫关注的请求头和响应头

  • 了解 常见的响应状态码

  • 理解 浏览器和爬虫爬取的区别


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

http作用

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

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

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

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

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

2.1 特别关注的请求头字段

http的请求形式

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

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

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

2.2 特别关注的响应头字段

http的响应形式

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请求的过程

http发送的过程

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地址对应的响应为准来进行数据的提取

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

requests模块

本阶段本文主要学习requests这个http模块,该模块主要用于发送请求响应,该模块有很多的替代模块,比如说urllib模块,但是在工作中用的最多的还是requests模块,requests的代码简洁易懂,相对于臃肿的urllib模块,使用requests编写的爬虫代码将会更少,而且实现某一功能将会简单。因此建议大家掌握该模块的使用

未完待续 下一期下一章

完整笔记请看文章开头

标签:md,http,请求,python,爬虫,响应,url,浏览器
From: https://blog.51cto.com/u_13578013/8089944

相关文章

  • 查看python中import可以支持的格式引用
    importimportlib.machineryformat_list=importlib.machinery.all_suffixes()print(format_list)so是linux可以加载的文件,windows是pyc ......
  • python json5 转 json
    JSON5是JSON的超集,它的目标是使JSON更易于人类阅读和编写。JSON5引入了一些在ECMAScript5中的一些特性,如注释、尾逗号、单引号等¹。要将JSON5转换为JSON,你需要删除JSON5中的所有注释、尾逗号和单引号,并确保所有的键都被双引号包围。这可以通过编程实现,也可以使用在......
  • shell脚本里如何设置Python的环境变量
    在shell脚本中设置Python的环境变量可以通过以下几个步骤来完成。首先,需要确定Python的安装路径。可以通过以下命令来查找Python的安装路径:该命令会返回Python可执行文件的路径,例如:/usr/bin/python。whichpython接下来,将Python的安装路径添加到PATH环境变量中。PA......
  • Python构造代理IP池提高访问量
    前言爬虫程序是批量获取互联网上的信息的重要工具,在访问目标网站时需要频繁发送请求,为了避免被目标网站封禁IP地址,我们需要使用代理IP来代替自己的IP地址进行访问。本文将介绍如何使用Python构建代理IP池,让爬虫程序更加稳定和高效地运行。一、代理IP是什么代理IP是指由第......
  • EF Core 6.0.0.7无法将add-migration项识别为 cmdlet
    EFCore6.0.0.7无法将add-migration项识别为cmdlet解决方案:重新安装Microsoft.EntityFrameworkCore.Tools程序包管理器控制台主机版本6.2.1.2键入"get-helpNuGet"可查看所有可用的NuGet命令。PM>install-packageMicrosoft.EntityFrameworkCore.Tools......
  • Python如何去掉字符串空格?
    在Python中,当我们使用Python处理字符串时,经常会遇到字符串中包含空格的情况,那么Python如何去掉字符串空格?有多种方法可以从Python字符串中删除空格,以下是详细内容介绍。1、使用strip()方法它是一个Python内置函数,可以用来去除字符串开头和结尾的空格。例如,以下代码将......
  • 电影推荐与管理系统Python+Django网页界面+协同过滤推荐算法【计算机毕设项目】
    一、介绍电影推荐管理系统。本系统使用Python作为主要开发语言,前端采用HTML、CSS、BootStrap等技术语言框架搭建展示界面,后端采用Django作为功能逻辑处理,并使用Ajax实现前端与和后端的通信。其主要实现功能如下:系统平台分为管理员和用户两个角色用户可以登录、注册、查看电影、发表......
  • 使用Python获取建筑网站数据,进行可视化分析,并实现网站JS解密!
    哈喽兄弟们,今天来实现一下建筑市场公共服务平台的数据采集,顺便实现一下网站的JS解密。话不多说,我们直接开始今天的内容。 首先我们需要准备这些环境使用Python3.8Pycharm模块使用requests-->pipinstallrequestsexecjs-->pipinstallPyExecJ......
  • 电影推荐与管理系统Python+Django网页界面+协同过滤推荐算法【计算机毕设项目】
    一、介绍电影推荐管理系统。本系统使用Python作为主要开发语言,前端采用HTML、CSS、BootStrap等技术语言框架搭建展示界面,后端采用Django作为功能逻辑处理,并使用Ajax实现前端与和后端的通信。其主要实现功能如下:系统平台分为管理员和用户两个角色用户可以登录、注册、查看电影......
  • 2023年第 4 期《Python 测试平台开发》进阶课程(11月14号开学)
    2023年第4期《Python测试平台开发》进阶课程主讲老师:上海-悠悠上课方式:微信群视频在线教学,方便交流本期上课时间:11月14号(每周二、四晚上21:00-22:30)报名费:报名费3800一人(之前学过《python接口+测试开发》课程的同学可优惠!)联系微信/QQ:283340479课程环境:1.pycharm+pytho......