requests模块-发送带请求头的请求

Header是HTTP请求和响应中的元数据信息,用于在请求中传递附加的参数和配置。发送带Header的请求可以实现定制化的功能和更精确的控制,下面是常见的一些HTTP Header字段及其作用:

Header字段作用示例
Authorization提供身份验证凭据,允许访问需要权限的资源Authorization: Bearer <token>
User-Agent用于标识发送请求的客户端类型和版本信息User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)
Content-Type指定请求或响应的主体部分的媒体类型Content-Type: application/json
Accept指定客户端能够接受的响应内容类型Accept: application/json
Cookie用于在客户端和服务器之间传递会话信息Cookie: session_id=ABC123
Referer指示请求的源地址,用于防止跨站请求伪造攻击Referer: https://example.com/page1
If-Modified-Since当资源未修改时,返回缓存的版本,减少数据传输If-Modified-Since: Sat, 01 Jan 2023 00:00:00 GMT
User-Custom-Header用户自定义的Header字段,可用于传递自定义信息X-Custom-Header: custom_value

注意:Header字段名称不区分大小写。

使用不同的Header字段,可以在HTTP请求中传递不同的信息,实现更灵活和个性化的请求和响应过程。但要注意,使用header时需遵循相关的HTTP规范,并确保数据的安全性和合法性。

我们先写一个获取百度首页的代码

# 导入requests库

import requests

# 设置要访问的URL
url = 'https://www.baidu.com'

# 发送GET请求获取响应
response = requests.get(url)

# 打印响应内容
print(response.content.decode())

# 打印响应对应请求的请求头信息
print(response.request.headers)

思考
  1. 对比浏览器上百度首页的网页源码和代码中的百度首页的源码,有什么不同?

    • 查看网页源码的方法:
      • 右键-查看网页源代码 或
      • 右键-检查
  2. 对比对应url的响应内容和代码中的百度首页的源码,有什么不同?

    • 查看对应url的响应内容的方法:
      1. 右键-检查
      2. 点击 Net work
      3. 勾选 Preserve log
      4. 刷新页面
      5. 查看Name一栏下和浏览器地址栏相同的url的Response
  3. 代码中的百度首页的源码非常少,为什么?

    • 需要我们带上请求头信息

      回顾爬虫的概念,模拟浏览器,欺骗服务器,获取和浏览器一致的内容

    • 请求头中有很多字段,其中User-Agent字段必不可少,表示客户端的操作系统以及浏览器的信息

携带请求头发送请求的方法
requests.get(url, headers=headers)
  • headers参数接收字典形式的请求头
  • 请求头字段名作为key,字段对应的值作为value
完成代码实现

从浏览器中复制User-Agent,构造headers字典;完成下面的代码后,运行代码查看结果

# 导入requests库
import requests

# 设置要访问的URL
url = 'https://www.baidu.com'

# 构造请求头字典,模拟浏览器发送请求
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"}

# 在请求头中带上User-Agent,模拟浏览器发送请求
response = requests.get(url, headers=headers) 

# 打印响应内容
print(response.content)

# 打印请求头信息
print(response.request.headers)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李乾星

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值