Request请求数据 (** kwargs参数)

目录

  • 🌟前言
  • 🍉request入门
      • 1. params
      • 2. data
      • 3. json
      • 4. headers
      • 5. cookies
      • 6. auth
      • 7. files
      • 8. timeout
      • 9. proxies
      • 10. allow_redirects
      • 11. stream
      • 12. verify
      • 13. cert
  • 🌟总结


🌟前言

在Python中,发送网络请求是一项常见的任务,特别是对于爬虫开发、API调用或任何需要与远程服务器交互的应用。requests库是最受欢迎的用于发送HTTP请求的第三方库,它提供了简洁易用的API来执行GET、POST、PUT、DELETE等多种HTTP方法。

在这里插入图片描述

🍉request入门

  • requests.request(method,url,** kwargs)

    **kwargs:控制访问的参数,均为可选项

    method:请求方式

参数说明
1params跟在url连接后面,查询(搜索)的含义,字典或者字流格式
2data终点作为向服务器提供或提交资源时使用,字典、字节序列或文件对象,作为Request的内容
3jsonJSON格式的数据,作为Request的内容
4headers字典、HTTP定制头
5cookies字典或CookieJar,Request中的cookie
6auth元组,支持HTTP认证功能
7files字典类型,传输文件
8timeout设定超时时间,秒为单位
9poroxies字典类型,设定访问代理服务器,可以增加登录认证
10allow_redirectsTrue/False,默认为True,重定向开关
11streamTrue/False,默认为True,获取内容立即下载开关
12verifyTrue/False,默认为True,认证SSL证书开关
13cert本地SSL证书路径

1. params

import requests
url = "https://example.com/search"
params = {"query": "Python爬虫","page": 1
}
response = requests.get(url, params=params) # 最终得到url = https://example.com/search?query=Python爬虫&page=1

2. data

import requests
url = "https://example.com/login"
# 相当于填写表单数据,如登录表单,post请求
data = {"username": "your_username","password": "your_password"
}
response = requests.post(url, data=data) 

3. json

json参数的作用是简化向API发送JSON数据的过程,确保了数据的正确序列化和HTTP头部的恰当设置,非常适合与那些期望接收JSON输入的现代Web服务交互。

import requests
import json
url = "https://api.example.com/data"
data = {"key": "value","another_key": "another_value"
}
response = requests.post(url, json=data)
# 注意:requests库内部会自动将data转换为JSON字符串,
# 并设置Content-Type为application/json
# data是一个Python字典,通过json=data传递给requests.post方法后,requests会将其转换为JSON字符串{"key": "value", "another_key": "another_value"}并设置请求头,以表明发送的是JSON格式的数据。

4. headers

实际上是http头的相关域,它对应了向某一个url访问时所发起的http头字段,利用这个字段定制某个访问url的http的协议头

  • User-Agent: 指定客户端的信息,很多网站会根据这个字段判断访问者是浏览器还是爬虫,有时需要将其设置为常见的浏览器字符串来避免被识别为爬虫。
  • Accept-Language: 指定客户端接受的语言种类,可以帮助获取特定语言的网页内容。
  • Content-Type: 当发送POST请求且包含请求体时,这个字段指定了数据的格式,如application/x-www-form-urlencodedapplication/json等。
  • Authorization: 如果网站需要认证,可以通过这个字段提供Token或其他认证信息。
import requests
url = "https://example.com"
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3","Accept-Language": "en-US,en;q=0.9,zh-CN;q=0.8,zh;q=0.7",
}
response = requests.get(url, headers=headers) # 模仿浏览器,请求数据

5. cookies

从http中解析cookies,它可以是字典,也可以是cookieJar形式;

解释:通过cookies参数携带相应的cookie信息,可以使爬虫模拟已登录用户的行为,访问那些需要登录后才能查看的内容。这在爬取需要身份验证的网站数据时尤为重要。

作用:cookies参数在Python爬虫中的作用是模拟浏览器的cookie机制,帮助爬虫程序绕过登录限制,访问受保护的内容,或是维持与服务器的会话状态,提高数据抓取的准确性和效率。

import requests
url = "https://example.com/userinfo"
cookies = {"sessionid": "abcdef123456","user": "example_user"
}
response = requests.get(url, cookies=cookies)

6. auth

字段是一个元组类型,它是支持http认证功能的,auth参数可以是一个元组,通常包含用户名和密码,或者是一个AuthBase的子类实例,用于自定义认证方案。

# 基本HTTP认证
from requests.auth import HTTPBasicAuth
url = "https://api.example.com/private"
username = "your_username"
password = "your_password"
response = requests.get(url, auth=HTTPBasicAuth(username, password))# API密钥认证
class APITokenAuth(requests.auth.AuthBase):def __init__(self, token):self.token = tokendef __call__(self, r):r.headers['Authorization'] = f'Token {self.token}'return r
url = "https://api.example.com/data"
token = "your_api_token"
response = requests.get(url, auth=APITokenAuth(token))# OAuth认证
对于支持OAuth的API,虽然直接通过auth参数处理可能较为复杂(通常需要先通过一系列步骤获取访问令牌),但也可以根据具体流程封装认证逻辑到自定义的AuthBase子类中。
通过合理使用auth参数,Python爬虫能够安全有效地访问那些需要认证的资源,确保了数据请求的合法性与安全性。

7. files

如何使用files参数上传一个图片文件

import requests
url = "https://example.com/upload"
file_path = "/path/to/your/image.jpg"
with open(file_path, 'rb') as file:files = {'image': (file_path, file, 'image/jpeg')}  # 文件名,文件对象,MIME类型response = requests.post(url, files=files)
print(response.text)

在这个例子中,我们首先打开要上传的图片文件,并以二进制模式读取('rb')。然后,我们将文件信息构造成一个字典,其中键 'image' 是服务器端预期接收文件的字段名,值是一个元组,包含文件名(这里也可以是任意字符串,服务器端可能会用作文件名)、文件对象和文件的MIME类型。最后,通过requests.post()方法发送POST请求,并将这个字典作为files参数传入。

files参数的使用让Python爬虫能够执行涉及文件上传的任务,如图片上传、文件分享网站的数据抓取等场景。


8. timeout

用于设置网络请求的超时时间,如果一个请求超过指定的秒数还没有得到响应,requests库将会抛出一个异常,而不是无限期地等待下去

import requests
url = "https://example.com"
timeout = 5  # 设置超时时间为5秒
try:response = requests.get(url, timeout=timeout)# 处理响应数据except requests.exceptions.Timeout:# 超时处理逻辑print("请求超时")# 请求https://example.com在5秒内没有得到服务器的响应,程序将不会一直等待,而是立即执行except块中的代码,打印出“请求超时”的信息

9. proxies

解释:proxies 参数用于配置HTTP或HTTPS代理服务器。代理服务器作为中间人,可以接收你的爬虫程序发出的网络请求,然后转发给目标服务器,并将响应结果再返回给你的爬虫。

目的:

  1. 匿名性:隐藏真实IP地址,防止被目标网站识别和封锁,尤其是在进行大量请求时,减少被封禁的风险。
  2. 地域限制绕过:通过选择不同地区的代理服务器,可以访问地理位置受限的内容或服务,比如某些网站仅对特定国家或地区开放。
  3. 性能优化:如果目标服务器对你的物理位置响应较慢,使用地理位置更近的代理服务器可以加快访问速度。
  4. 负载均衡和带宽管理:企业级应用中,可能会利用代理服务器来分配请求,优化网络资源使用。
import requests
proxies = {"http": "http://代理服务器地址:端口","https": "https://代理服务器地址:端口",
}
response = requests.get("http://example.com", proxies=proxies)

代码解释:proxies参数是一个字典,其中键为协议名(“http” 或 “https”),值为代理服务器的URL(包括协议、地址和端口)。这样,所有通过requests发起的请求都会通过指定的代理服务器进行。

注意:使用代理时应遵守目标网站的使用条款和服务协议,合法合规地进行数据抓取,尊重网站的Robots协议,并尽量减少对目标服务器的负担。同时,选择稳定可靠的代理服务对于爬虫的成功运行至关重要。


10. allow_redirects

requests库会自动处理重定向,即自动向新的URL发送请求。当设置为False时,则不自动处理重定向,而是直接返回原始的重定向响应。

import requests
# 允许重定向
response = requests.get('http://example.com/redirect', allow_redirects=True)
print(response.url)  # 最终重定向后的URL
# 禁止重定向
response = requests.get('http://example.com/redirect', allow_redirects=False)
print(response.status_code)  # 可能会得到一个重定向的状态码,如301或302
print(response.headers['location'])  # 获取重定向的目标URL,而不是自动访问

11. stream

解释:在使用Python的requests库进行网络请求时,stream参数是一个非常实用的选项,它的主要作用是控制是否立即下载响应内容。当设置stream=True时,requests不会立即下载整个响应体,而是等到你需要时才按需读取,这对于大文件下载或者仅需处理部分响应内容的场景非常有用
stream参数的作用

  1. 节省内存:对于大型文件的下载,如果直接下载整个响应体到内存中,可能会消耗大量内存资源。使用stream=True可以让数据边下载边处理,减少内存占用。
  2. 按需读取:当你只想读取响应的一部分内容,而不是全部时,使用流式处理可以更加高效。例如,你可能只需要检查响应的前几行来决定是否继续下载剩余内容。
  3. 长时间运行的连接:在某些情况下,保持连接打开并逐步处理响应内容是有益的,比如实时数据流处理。
import requests
url = "http://example.com/large_file.zip"
response = requests.get(url, stream=True)
# 检查请求是否成功
if response.status_code == 200:# 打开一个本地文件用于保存下载的内容with open('large_file.zip', 'wb') as f:for chunk in response.iter_content(chunk_size=1024): # 如果chunk不是空的,才写入文件if chunk: f.write(chunk)

12. verify

  • verify=True,这意味着requests会验证服务器的SSL证书,确保与之建立的HTTPS连接是安全的,可以防止中间人攻击。
  • 有时候你可能需要关闭这个验证,比如在测试环境中,或者当遇到自签名证书(self-signed certificate)或证书链不完整的情况,这时可以将verify设置为False。不过,这样做会降低安全性,应该谨慎考虑,并仅在确信不会导致安全问题的情况下使用。
import requests
url = "https://example.com"
response = requests.get(url, verify=False)

13. cert

  • cert参数可以接收一个表示客户端证书文件路径的字符串,或者一个包含证书文件路径和私钥文件路径的元组。
  • cert 参数用于指定HTTPS请求时的客户端证书。当目标网站或API需要客户端提供安全证书进行身份验证时,就需要用到这个参数。这对于访问那些启用了客户端证书认证的HTTPS服务尤为重要,比如一些内部系统、银行接口或是高度安全的API。
import requests
url = "https://example.com/api/secure-endpoint"
cert = "/path/to/client.pem"  # 单个文件包含证书和私钥
# 或者,如果证书和私钥分开:
# cert = ("/path/to/cert.pem", "/path/to/key.pem")
response = requests.get(url, cert=cert)

🌟总结

requests库的强大之处在于其简单直观的接口设计,使得开发者能够快速上手并完成复杂的网络请求任务,而无需关注底层细节。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/11269.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

淘宝商品评论电商API接口,让你购物不再困扰

现在的时代购物已经成为了人们生活中不可或缺的一部分。然而,面对琳琅满目的商品,我们常常犯愁,不知道如何选择。为了解决这个问题,淘宝推出了商品评论电商API接口,为广大消费者提供了极大的便利。联讯数据将详细介绍淘…

数据挖掘实战-基于决策树算法构建银行贷款审批预测模型

🤵‍♂️ 个人主页:艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞&#x1f4…

6818Linux内核--Bootloader应用分析

Bootloader应用分析 一个嵌入式 Linux 系统从软件的角度看通常可以分为四个层次: 引导加载程序。包括固化在固件( firmware )中的 boot 代码(可选),和 Boot Loader 两大部分。 Linux 内核。特定于嵌入式板子的定制内核以及内核的启动参数。 文件系统…

一分钟把小程序音频保存到手机上

在这个快节奏的时代,每一分钟都显得格外珍贵。你是否曾在小程序中偶遇一段旋律,它如同清晨的露珠,晶莹剔透,却又转瞬即逝?是否曾在某个瞬间,渴望将那段旋律永久地镌刻在心间,让它成为你私人时光…

【微信小程序开发】flex布局在小程序开发项目中的应用详解

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…

温情母亲节,李良济中医课堂,用爱呵护妈妈的健康与美丽

这个世界上,有这么一个人,你听过她最美的年华,她见证你最美的长大,这个人就是妈妈。 知恩于心,感恩于行!母亲节,李良济中医课堂助健康,滋养好物养身心,与您一起用爱守护…

2024最新单身经济新模式,低客单量高转换率,长期项目,新手快速上手

在今年,”搭子”这个词汇异常火爆,主要通过搭子流量进行线下推广以实现高品质群的盈利。有一句流行语说,年轻人可以不想谈恋爱,但不能没有搭子,这显示了搭子的需求量很大。 只要有需求,就会有创业的机会。…

第二证券今日投资参考:VA、VE景气上行 猪价步入慢涨趋势

上周五,沪指午后在地产、金融等板块的带动下震荡上升,创业板指等弱势下探。到收盘,沪指微涨0.01%报3154.55点,深证成指跌0.58%报9731.24点,创业板指跌1.15%报1878.17点,科创50指数跌1.5%;两市算…

【解决】:git clone项目报错fatal: fetch-pack: invalid index-pack output

象:之前一直使用gitee将个人学习和工作相关记录上传到个人gitee仓库,一直没出现过问题。直到有一天换电脑重新拉取代码发现出了问题,具体如下图: 原因分析: 经过查询发现主要原因是因为git clone的远程仓库的项目过大…

基于AIoTedge+ThingsKit物联网平台,实现办公室人员进出AI统计

在AIoT时代,智能办公已成为提升企业效率的关键。本期文章将带你了解如何利用AIoTedge结合ThingsKit物联网平台,实现办公室人员进出的智能统计。这不是简单的技术堆砌,而是一场关于AI与IoT融合的实战演示。🌟 提示:AIoT…

Mysql进阶-sql优化篇

sql优化 sql优化insert优化批量插入手动提交事务主键顺序插入大批量插入数据 主键优化数据组织方式页分裂页合并主键设计原则 order by 优化原则 group by优化limit优化count 优化count的几种用法 update优化 sql优化 insert优化 批量插入 Insert into tb_test values(1,Tom…

算法笔记——数位DP

一、前置知识 1.DP小知识 D P DP DP 是一种算法思想,用递推方程的方式解决问题。但是使用它要满足如下性质: 最优子结构: 子结构优秀,整个就优秀。无后效性:当前决策不会影响后面。 2.DP实现方法 众所周知&#xf…

【Java】Java基础 使用集合实现斗地主分牌

📝个人主页:哈__ 期待您的关注 目录 0.思路 1.创建玩家手牌集合 2.创建牌堆 3. 把牌放入牌堆 4.洗牌 5.进行分牌 6.完整代码 今天使用集合TreeSet来实现一个斗地主的分牌流程。 TreeSet集合的一个特点就是 元素有序,这样就方便…

定期更新与维护:技术与生活的同步律动

在这个数字化时代,科技的温暖之光照进了盲人朋友们的日常生活中,特别是那些辅助出行的应用程序,它们如同贴心的向导,引领着用户穿越城市的喧嚣与宁静。然而,要确保这些应用始终能够高效、安全地服务于盲人用户&#xf…

Seaborn用法大全

原文连接: https://blog.csdn.net/qq_38614074/article/details/138251530 # Seaborn介绍 Seaborn是一个基于Python的数据可视化库,它建立在matplotlib的基础之上,为统计数据的可视化提供了高级接口。Seaborn通过简洁美观的默认样式和绘图类型&#xff…

Java随笔1

1.编程中组件的概念: 在编程中,组件(Component)通常指的是一种可重用的、模块化的代码单元,它封装了特定的功能或用户界面元素,并提供了与其他代码进行交互的接口。组件可以看作是对数据和方法的简单封装&…

锁策略详解:互斥锁、读写锁、乐观锁与悲观锁、轻量级锁与重量级锁、自旋锁、偏向锁、可重入锁与不可重入锁、公平锁与非公平锁

一.锁策略 锁策略指的是在多线程编程中用于管理共享资源访问的规则和技术。它们确保在任何给定时间只有一个线程可以访问共享资源,以防止竞态条件和数据不一致性问题。常见的锁策略包括: 互斥锁(Mutex):最常见的锁类型…

王者营地ip地址怎么隐藏

在数字化快速发展的今天,网络安全和隐私保护成为了每个人都需要面对的重要问题。作为一款备受欢迎的游戏社区应用,王者营地为用户提供了丰富的游戏信息和交流平台。然而,与此同时,用户的IP地址也可能在不经意间被泄露,…

spring框架定时任务(@Scheduled)

内容: 在spring框架中,scheduled注解是用于声明定时任务的,以最简单的方式来创建定时任务。 注意: 要使用scheduled注解,需要确保已下几点: 1.spring应用程序已经开启了定时任务的开启。需要在配置类&am…

博客互动革命:如何打造活跃读者社区并提升参与度

CSDN 的朋友你们好,我是未来,今天给大家带来专栏【程序员博主教程(完全指南)】的第 10 篇文章“与读者互动”。本文揭示了提升技术博客参与度的秘诀。从评论互动到社交媒体策略,本文将指导你如何建立强大的读者社区。掌…