Http头信息(二)——请求头信息(二)

前言

上一篇文章介绍了:

  • Accept
  • Accept-Charset
  • Accept-Encoding
  • Accept-Language
  • Authorization
  • Proxy Authorization
  • Expect
  • From
  • Host
  • Max-Forwards

10种头信息,本篇文章,将会介绍:

  • If-Match
  • If-Modified-Since
  • If-Unmodified-Since
  • If-None-Match
  • If-Range
  • Range
  • Refer
  • TE

8个头信息,话不多说,开始

1. If-Match

形如If-xxx这种形式的请求首部字段,都可以称为条件请求。服务器接收到条件请求后,只有判断指定条件为真时,才会执行请求。

<!--语法-->
If-Match:<etage_value>
<!--例子-->
If-Match:"123456"

服务器会比对If-Match的字段值和资源的ETag值,仅当两者一致时,才会执行请求。否则返回412 Precondition Failed状态码。

  1. 什么是ETag?
    ETag是一个响应首部,代表资源的标识符,两个资源只要有一个字节不同,他们的ETag值就不同。在ETag值前加入 W/ 可采用弱比较算法:两个文件内容相同也算相同

2. If-Modified-Since

<!--语法,时间格式参见Date首部-->
If-Modified-Since:时间
<!--例子-->
If-Modified-Since:Sun, 17 Oct 2021 15:08:00 GMT

点击跳转:Date首部

此请求首部只能用在GETHEAD请求中(虽然可能遵守的人很少)。其表示:若资源在其指定的时间之后更新了,则返回资源(状态码为200 OK),否则返回状态码(304 Not Modified)

3. If-Unmodified-Since

其与If-Modified-Since的区别有:

  • 资源在其指定的时间后没有进行修改才将资源返回
  • 其可与non-safe方法如POST搭配使用
  • 如果发生了修改,则不返回资源,返回状态码412 Precondition Failed

4. If-None-Match

<!--语法-->
If-None_Match:<etag_value>
<!--例子-->
If-None_Match:"123456"

该指令意思是:只有当请求资源的ETag值与该字段的值不同时,才执行请求。

  • 对于GET,HEAD等获取资源的方法来说。其可以获取到最新的资源,与If-Modified-Since类似。但匹配上时(请求资源的ETag值与该字段的值不同),服务器会返回资源和状态码(200 OK),当没有匹配上时,服务器返回状态码(304 Not Modified)
  • 对于其他请求,只有匹配上,服务器才会执行响应的请求。
  • 对于能够引发服务器状态改变的方法,比如PUT在服务器创建了一个文件,返回412 Precondition Failed状态码

当与 If-Modified-Since一起使用时,If-None_Match优先级更高

5. If-Range

If-Range需要搭配Range首部一起使用。

<!--语法-->
If-Range: 时间(与Date首部格式一致)
If-Range: <etag>

其表示:若If-Range后面的值为:

  • 时间:在这个时间之后,资源没有改变,则Range首部起作用。
  • ETag值:这个值和资源的ETag值相同(资源没有改变),则Range首部起作用

If-Match或者Last-Modified配合Range不就行了,为啥还要If-Range?
If-Match举例:如果If-Match条件不满足,则服务器返回412 Precondition Failed状态码,不会执行Range的请求。

6. Range

其告知服务器:我不要资源的全部数据,我只要资源的一部分数据,你给我返回我要的那部分就行了。

<!--语法-->
Range: <unit>=<range-start>-
Range: <unit>=-<range-end>
Range: <unit>=<range-start>-<range-end>
Range: <unit>=<range-start>-<range-end>, <range-start>-<range-end>
<!--例子-->
Range: bytes= 5000-  <!--从第5000个字节到最后一个字节-->
Range: bytes= -5000  <!--从第1个字节到第5000个字节-->
Range: bytes= 5000-10000 <!--从第5000个字节到第10000个字节-->
Range: bytes= 5000-10000, 12000- <!--从第5000个字节到第10000个字节和从第12000个字节到最后一个字节-->
  • 如果服务器返回的是资源的一部分,则会返回状态码(206 Partial Content),对于一次从请求多个部分(Range: bytes= 5000-10000, 12000-),服务器会以multipart的形式返回

    什么是multipart?
    点这里查看:Http之Multipart介绍

  • 如果服务器发现请求范围不合法,比如Range: bytes= 5000-100,,则返回状态码416 Range Not Satisfiable。如果服务允许Range出错,则会返回整个资源的所有内容,并返回状态码: 200 OK

7. Refer

其表明了当前请求是由那个页面发起的

<!--语法-->
Referer: <url>
<!--例子-->
Referer: http://www.example.com

服务端一般使用 Referer 请求头识别访问来源,可能会以此进行统计分析、日志记录以及缓存优化等。

需要注意的是 referer 实际上是 referrer 误拼写

8. TE

  • 用法一:与Transfer-Encoding一样,都表示传输编码。与它的区别是:
    • Transfer-Encoding:服务器传给客户端,告诉客户端->服务端采取的传输编码方式
    • TE:客户端传给服务端,告诉服务端->客户端能够处理的传输编码方式
  • 用法二:TE:trailers
    希望服务端采用这种方式返回内容:
    ...
    Transfer-Encoding:chunked
    Trailers:<header-names>
    ...
    
    

到此请求头信息介绍结束,下一篇将开始介绍响应头信息
关注我,获取最新的更新
下篇文章:Http头信息(三)——响应头信息(一)

Reference

[1]. HTTP Headers

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的 Python 爬虫实现,用于从北京租房信息网站上爬取租房信息并将其导入到 Excel 文件中。 首先,我们需要安装以下 Python 库: - requests:用于发送 HTTP 请求和获取网页内容。 - Beautiful Soup:用于解析 HTML 和 XML 网页内容。 - openpyxl:用于操作 Excel 文件。 可以使用 pip 命令进行安装: ``` pip install requests beautifulsoup4 openpyxl ``` 接下来,我们需要编写 Python 代码: ```python import requests from bs4 import BeautifulSoup from openpyxl import Workbook # 发送 HTTP 请求并获取网页内容 url = 'https://bj.zu.anjuke.com/fangyuan/p1/' response = requests.get(url) html = response.text # 使用 Beautiful Soup 解析网页内容 soup = BeautifulSoup(html, 'html.parser') houses = soup.select('.zu-itemmod') # 创建 Excel 文件并添加表 wb = Workbook() ws = wb.active ws.append(['标题', '链接', '小区', '面积', '租金']) # 遍历租房信息并将其添加到 Excel 文件中 for house in houses: title = house.select('.zu-info h3 a')[0].text.strip() link = house.select('.zu-info h3 a')[0]['href'] community = house.select('.details-item')[0].text.strip() area = house.select('.details-item')[1].text.strip() price = house.select('.zu-side strong')[0].text.strip() ws.append([title, link, community, area, price]) # 保存 Excel 文件 wb.save('beijing_rent.xlsx') ``` 该爬虫程序将会从北京租房信息网站的第一页开始爬取租房信息,包括标题、链接、小区、面积和租金,并将其添加到 Excel 文件中。你可以根据需要修改代码以实现更多功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值