解读爬虫中HTTP的秘密(基础篇)Python数据科学

在学习爬虫的过程中,相信大家对HTTP这个词已经不陌生了,它好像从未离开过我们的视线。被迫所需,我们每次都要使用开发者工具去查看请求头,响应头,以及头中的各个字段,使用别人封装好的模块填入信息,敲几行代码就解决了。面对简单的爬取任务,我们也许根本不用管它是什么,但可能等我们真正遇到问题的时候,却无从下手。

认识并深刻理解HTTP对于爬虫的实现过程是非常有帮助的。为了更好的让大家理解爬虫中的HTTP,博主将分为两篇对HTTP进行讲述,<基础篇>和<高阶篇>。本篇为基础篇,将从以下几个部分进行阐述。

引自百度百科的权威回答:

HTTP协议是用于从WWW服务器传输超文本到本地浏览器的传输协议。它可以使浏览器更加高效,使网络传输减少。它不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示(如文本先于图形)等。

HTTP采用了浏览器/服务器这种请求/响应模型,浏览器永远是HTTP请求的发起者,服务器为响应者。

这样在浏览器客户端没有发起请求的情况下,服务器是不能主动推送消息给客户端的。

HTTP是一个应用层协议,是我们想从服务器端获取信息的最直观的请求。比如,在爬虫中使用的等都是封装了HTTP协议,作为一个HTTP客户端实现了博文,图片,视频等信息源的下载。

但是HTTP也不是直接就可以用的,它的请求是建立在一些底层协议的基础上完成的。如TCP/IP协议栈中,HTTP需要TCP的三次握手连接成功后才能向服务器发起请求。当然,如果是HTTPS的话,还需要TSL和SSL安全层。

既然HTTP协议需要建立在其它底层协议基础上,我们来看看一个完整的HTTP请求是什么样的。

当我们点击一个链接或者输入一个链接的时候,整个HTTP的请求过程就开始了,然后经过以下步骤得到最后的信息,我们这里简单介绍一下前四个步骤,旨在了解HTTP。

上面的步骤<3>和<4>可以简单的示意如下,更方便大家理解。其中,请求和响应都包含特定格式的信息,具体我们接下来会继续解读。

响应HTTP请求会返回响应状态码,根据状态码可以知道返回信息的状态。状态码规定如下:

相信你已经对HTTP的请求过程有了大致的了解了,下面我们来详细介绍HTTP请求的报文信息。报文内容包含请求行、请求头部、请求主体。

我们发现请求报文的格式与上面基本一致,正式我们想要的。那么,接下来我们将要逐个的介绍以上各个信息。

是HTTP的请求方式之一,HTTP/1.1协议中共定义了8种方法与服务器交互,有GET、POST、HEAD、PUT、DELETE、OPTIONS、TRACE、CONNECT,其中比较常用的是方法了。

GET请求方法后URL(这里是/)和版本1.1,别忘了空格。

HTTP的头域包括通用头、请求头、响应头和实体头四部分。因为在爬虫过程中,我们经常会提交headers请求头信息用于伪装,所以我们这里对请求头着重讲解一下。

请求头是请求报文特有的,它向服务器提交了一些额外的信息,例如通过Accept字段信息,我们客户端可以告诉服务器我们接受一些什么类型的数据。而我们其实可以把这些字段信息就当成<键值对>对待。

下面我们看看这些字段都代表了什么意思?

内容:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,/;q=0.8含义:告诉浏览器我们接受MIME的类型

内容:zh-CN,zh;q=0.9含义:告诉服务器能够接受的语言,没有则代表任何语言

内容:keep-alive含义:告诉服务器需要持久有效的连接状态(HTTP1.1默认会进行持久连接)

内容:www.baidu.com含义:客户端指定自己想访问的web服务器域名/IP地址和端口号

内容:max-age=0含义:(引自百度百科)

网页的缓存是由HTTP消息头中的“Cache-control”来控制的,常见的取值有private、no-cache、max-age、must-revalidate等,默认为private。

但是HTTP请求和响应的Cache-Control是不完全一样的。常见的请求Cache-Control取值有,,,,,

响应的Cache-Control取值有,,,,,,,

我们这里主要介绍请求时的常见Cache-Control取值。

<1>max-age<=0本例中使用max-age=0,表示每次请求会访问服务器,通过Last-Modified来判断文件是否被修改,如果被修改,返回状态码200并得到最新文件,否则将返回304状态码并读取缓存文件。

<2>max-age>0表示会直接从浏览器提取缓存。

<3>no-cache表示不会在浏览器缓存进行提取,而是强制的向服务器发出请求,这样可以保证客户端能够收到最权威的回应。

<4>no-store所有内容都不会被缓存到缓存或Internet临时文件中。

内容::1含义:表示浏览器/爬虫可以处理HTTPS协议,并能自动升级请求从HTTP到HTTPS。

内容:Mozilla/5.0(WindowsNT6.1;WOW64)..Safari/537.36含义:(这个是爬虫中最常用了)用于伪装成浏览器身份请求网页。它的意思自然就是表示浏览器的身份,说明是用的哪种浏览器进行的操作。

以上就是本例中出现的所有字段信息内容。当然,还有其它一些常用字段信息,这里也一起说明一下。

含义:(这个也是爬虫常用到的,防盗链)客户端通过当前URL代表的页面出发访问我们请求的页面。爬虫中,一般我们只要把它设置成请求的网页链接就好了。

含义:(这个也是爬虫常用到的)表示浏览器可接受的字符集,可以是utf-8,gbk等

内容:Thu,10Apr200809:14:42GMT含义:请求的内容在指定日期以后一旦被修改就被返回对象内容,否则返回“NotModified”

含义:

含义:告诉浏览器自己想取对象的哪个部分。例如,Range:bytes=1173546

THE END
1.爬虫是什么爬虫是指网络爬虫,一种按照设定好的程序抓取网络信息的程序或者脚本。网络爬虫又被称为网页机器人或者网络蜘蛛,是一种按照开发者设定好的既定程序对万维网上的信息进行自动抓取的程序或者脚本,与之类似的还有自动https://edu.iask.sina.com.cn/jy/hn4mu1dNVb.html
2.劲旅网的微博【#民宿回应5999元一晚房间满是爬虫#:暴雨所致,已赔礼】#5999元一晚民宿满是爬虫蜘蛛# 据潇湘晨报:“住了个5999元一晚的民宿,半夜屋里全是虫子、蜘蛛……甚至有拇指大小的爬来爬去。”7月27日,有女子发布视频称,在江西望仙谷,入住悬崖民宿,结果“踩了个大雷”。此事引发关注。视频显示,床单、 ?...https://www.weibo.com/ctcnn?refer_flag=1005055013_
1.不知道爬虫是什么?那就快来看看这篇吧,带你彻底了解Python爬虫1.爬虫是什么 网络爬虫(web crawler 简称爬虫)就是按照一定规则从互联网上抓取信息的程序,既然是程序那和正常用户访问页面有何区别?爬虫与用户正常访问信息的区别就在于:用户是缓慢、少量的获取信息,而爬虫是大量的获取信息。 这里还需要注意的是:爬虫并不是Python语言的专利,Java、Js、C、PHP、Shell、Ruby等等语言...https://blog.csdn.net/m0_59162248/article/details/123068354
2.什么是爬虫Python爬虫的原理是什么腾讯云开发者社区二、爬虫的基本流程: 用户获取网络数据的方式: 方式1:浏览器提交请求--->下载网页代码--->解析成页面 方式2:模拟浏览器发送请求(获取网页代码)->提取有用的数据->存放于数据库或文件中 爬虫要做的就是方式2; 1、发起请求 使用http库向目标站点发起请求,即发送一个Request ...https://cloud.tencent.com/developer/article/1934685
3.爬虫系列1什么是爬虫,玩爬虫的正确姿势有哪些事实上,爬虫在法律中是不被禁止的。但是如果如果利用爬虫获取数据确实是有一定的违法风险。这就好比我们生活中使用的刀,削水果切菜这都没事,但是如果用刀故意伤人这性质就不一样。 我们该如何规避爬虫的风险呢? 1、遵守Robots协议。 Robots协议又称为君子协议,就好比过马路的时候,遇到红灯,我们都知道会停止。但是你...https://blog.51cto.com/u_15081058/2594658
4.Python爬虫(一)什么是爬虫?什么是爬虫 百度词条上对于爬虫的定义是:网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫。 说的简单一些,爬虫就是模拟客户端(浏览器)发送网络请求,获取网络响...https://www.jianshu.com/p/cd6977510dc8
5.肛门口痒像有爬虫是什么原因患者肛门口痒像有爬虫是肛周湿疹的原因,也有可能是肠道寄生虫的原因引起的,患者需要遵医嘱服用药物进行治疗。1、肛周湿疹:肛周湿疹通常是由于不良生活习惯、遗传等因素导致的,患病后患者会出现肛门潮湿、疼痛等症状,部分患者还会出现肛门口痒像有爬虫的现象,患者可以https://www.miaoshou.net/article/WGoM5mDQ07E2PERV.html
6.数据采集复习题爬虫python代码(urllib,bs4库) 正则表达式基础 书p129规范化变换数据的三个计算。 传感器节点结构 如何运用传感器节点构造一个数据采集系统?(第二章作业) 6.常用的数据采集命令行:hadoop命令行 ** 第一章作业 ** 1.数据采集系统主要实现哪些基本功能? https://www.skycaiji.com/aigc/ai1303.html
7.Python实现考试自动答题的脚本分享python1)爬虫实现思路 一. 数据来源分析 --> 通过浏览器 开发者工具 抓包分析 1. 明确需求: - 明确采集的网站是什么 题目答案页面: https://tiba.jsyks.com/Post/2c15b.htm 2. 分析这两个数据怎么获取 数据来自于 --> 答案页面 第一题: https://tiba.jsyks.com/Post/2c15b.htm ...https://m.jb51.net/article/278199.htm
8.苏宇:网络爬虫的行政法规制这些机制从客户端或服务端采取不同策略进行反爬,主要可以分为以下几大类:(1)识别机制,即发现非人类操作行为的机制,主要是对网络请求的传输信息分析(Headers字段识别)和操作规律进行分析,致力于从爬虫活动的各种痕迹中识别出爬虫。其中,最常见就是验证码,验证码可以被认为是一种“区分人与计算机的全自动公共图灵测试...http://fzzfyjy.cupl.edu.cn/info/1035/13584.htm
9.非结构化数据提取技术在统计工作中的应用②网络爬虫的主要作用是获取互联网上的信息,大多数信息都可以通过HTTP协议检索,利用主页中的超文本链接遍历Web,通过URL实现从一个HTML文档爬行到另一个HTML文档的目的。图1是一个简单的网络爬虫结构图。 图1 ?网络爬虫结构图 ③URL是Uniform Resource Locator统一资源定位器的缩写,它是WWW中统一资源唯一的定位标志...https://tjj.changzhi.gov.cn/sjfx/202207/t20220704_2588893.html