如何用Python Requests发送请求

简介: 如何用Python Requests发送请求

在业界中,Python的使用率极高,特别是在Web开发和网络爬虫方面。对于网络爬虫而言,常常使用的库为requests。requests是Python第三方库,它简化了HTTP请求和响应过程的复杂性,也可以用于HTTP/2和异步HTTP通信。那么,本文将介绍如何使用Python的requests请求。

一、requests库的安装

在开始之前,我们需要先安装requests库,这里我们介绍两种安装方式。

1、使用pip安装:在终端中输入以下命令即可完成安装。

pip install requests

2、使用conda安装:在conda环境下,通过以下命令即可完成requests库的安装。

conda install requests

二、requests库的使用

requests库主要包含如下功能:

1、request()函数

2、response()函数

3、get()函数

4、head()函数

5、post()函数

6、put()函数

7、patch()函数

8、delete()函数

9、session()函数

1、requests.request()

请求函数request()可接收如下参数:

def request(method, url, **kwargs):

其中,method是请求类型,url是请求URL,kwargs 表示其他可选参数,包括:

params: URL 中的额外参数
data: 请求中需要的数据
json: JSON 格式的数据
headers: 请求头
cookies: 请求Cookies
files: 文件上传
auth: HTTP 基础认证
timeout: 超时时间
allow_redirects: 是否允许重定向,
proxies: 代理
verify: 是否验证证书
stream: 是否从响应中立即下载响应体
cert: SSL 证书

例如,我们可以使用request() 应用函数来发送一个GET请求,如下所示:

import requests
 
response = requests.request('GET', 'http://www.baidu.com')
 
print(response.text) # 输出响应内容

在上述示例中,我们使用请求函数request()发送了一个GET请求到百度首页,获取了响应结果并输出结果到终端。

2、requests.get()

get()函数可以用于发送非常简单的get请求。

requests.get(url, params=None, **kwargs)

其中,params是可选的查询字符串参数,用于拼接URL的查询参数。

例如:

import requests
 
response = requests.get('https://www.baidu.com/s', params={'wd': 'requests'})
 
print(response.url) # 输出请求的URL
print(response.text) # 输出响应内容

在上面的示例中,我们通过get()函数请求了百度搜索关键字为“requests”的结果,并输出了URL和响应内容。

3、requests.post()

post()函数可以用于发送POST请求。它也可以接受一个data参数,用于指定POST请求体中的数据。

requests.post(url, data=None, **kwargs)

例如:

import requests
 
response = requests.post('https://httpbin.org/post', data={'key':'value'})
 
print(response.text) # 输出响应内容

在上述例子中,我们发送了一条POST请求,其中发送了一个data参数为{‘key’:‘value’}的参数数据。我们通过输出响应内容来验证请求是否被正确解析。

4、requests.put()

put()函数可以用于发送PUT请求,它也可以接受一个data参数,用于指定PUT请求体中的数据。

requests.put(url, data=None, **kwargs)

例如:

import requests
 
response = requests.put('https://httpbin.org/put', data={'key':'value'})
 
print(response.text) # 输出响应内容

在上述示例中,我们用put()函数发送了一条PUT请求,其请求体中包含了一个键值对为{‘key’:‘value’}的数据。

5、requests.patch()

patch()函数可以用于发送PATCH请求,它也可以接受一个data参数,用于指定PATCH请求体中的数据。

requests.patch(url, data=None, **kwargs)

例如:

import requests
 
response = requests.patch('https://httpbin.org/patch', data={'key':'value'})
 
print(response.text) # 输出响应内容

在上述示例中,我们用patch()函数发送了一条PATCH请求,请求体中包含了一个键值对为{‘key’:‘value’}的数据。

6、requests.delete()

delete()函数可以用于发送DELETE请求,它也可以接受一个data参数,用于指定DELETE请求体中的数据。

requests.delete(url, data=None, **kwargs)

例如:

import requests
 
response = requests.delete('https://httpbin.org/delete', data={'key':'value'})
 
print(response.text) # 输出响应内容

在上述示例中,我们用delete()函数发送了一条DELETE请求,请求体中包含了一个键值对为{‘key’:‘value’}的数据。

7、requests.head()

head()函数可以用于发送HEAD请求。

requests.head(url, **kwargs)

例如:

import requests
 
response = requests.head('https://www.baidu.com')
 
print(response.headers) # 输出响应头

在上述示例中,我们用head()函数发送了一条HEAD请求,输出了响应头。

8、requests.session()

session()函数可以用于创建一个Session对象,以便在多个请求之间保持会话状态。

例如:

import requests
 
with requests.Session() as session:
    response = session.get('https://httpbin.org/cookies/set/sessioncookie/123456789')
    print(response.text) # 输出设置的cookie值
 
    response = session.get('https://httpbin.org/cookies')
    print(response.text) # 输出会话中的cookie值

在上述示例中,我们用session()函数创建了一个Session对象,并使用get()函数发送了两条请求。第一次请求设置了一个名为“sessioncookie”的cookie,第二个请求中展示了会话中的cookie。这个示例展示了如何在多次请求中保持cookie信息。

9、请求头和请求Cookies

请求头用于向服务器发送自定义头信息,请求Cookies用于向服务器发送cookie信息。

例如:

import requests
 
url = 'https://httpbin.org/headers'
headers = {'User-Agent': 'Mozilla/5.0'}
cookies = {'key': 'value'}
 
response = requests.get(url, headers=headers, cookies=cookies)
 
print(response.text) # 输出响应内容

在上述示例中,我们使用headers和cookies参数向服务器发送自定义请求头和cookie信息。

10、文件上传

requests库也支持文件上传功能,可以通过files参数实现文件上传。

例如:

import requests
 
url = 'https://httpbin.org/post'
files = {'file': open('test.txt', 'rb')}
 
response = requests.post(url, files=files)
 
print(response.text) # 输出响应内容

在上述示例中,我们使用files参数进行文件上传,该参数接收一个字典类型变量,其中键代表表单字段名,值代表文件数据。

11、代理设置

请求代理可以在请求时设置代理,以便使用代理服务器来发送请求。

例如:

import requests
 
url = 'https://httpbin.org/ip'
 
proxies = {
  'http': 'http://10.10.1.10:3128',
  'https': 'https://10.10.1.10:1080',
}
 
response = requests.get(url, proxies=proxies)
 
print(response.json()) # 输出响应内容

在上述示例中,我们使用proxies参数设置了http和https的代理服务器,请求获取了返回JSON格式的IP地址信息。

12、证书验证

在使用requests库时,可以设置是否需要验证HTTPS证书。

例如:

import requests
 
url = 'https://httpbin.org/get'
 
response = requests.get(url, verify=True)
 
print(response.status_code) # 输出响应状态码

在上述示例中,我们使用verify参数设置证书验证为True,对返回的是HTTP代码为200的响应进行检验。

13、超时设置

在访问某些网站时,可能会遇到请求超时的情况。此时,可以使用timeout参数设置超时时间。

例如:

import requests
 
url = 'https://httpbin.org/delay/10'
timeout = 1
 
response = requests.get(url, timeout=timeout)
 
print(response.status_code) # 输出响应状态码

在上述示例中,我们使用timeout参数设置请求超时时间为1秒,请求了一个需要延迟10秒的URL。由于请求超时,将会得到一个TimeoutError异常。

三、总结

requests库是Python爬虫领域中最常用的网络请求库之一。它提供了简单易用的API,可以帮助开发者快速、方便地进行HTTP请求。本文介绍了requests库的常用函数,包括request(), get(), post(), put(), patch(), delete(), head()等,及其常用参数和用法。同时,本文还介绍了headers、cookies、文件上传、代理设置、证书验证、超时设置等高级用法。通过学习本文,相信读者已经能够灵活使用requests库进行网络请求,提高爬虫编写效率。


相关文章
|
10月前
|
存储 Web App开发 前端开发
Python + Requests库爬取动态Ajax分页数据
Python + Requests库爬取动态Ajax分页数据
|
10月前
|
Web App开发 安全 数据安全/隐私保护
利用Python+Requests实现抖音无水印视频下载
利用Python+Requests实现抖音无水印视频下载
|
数据采集 存储 开发者
如何动态调整Python爬虫的Request请求延迟
如何动态调整Python爬虫的Request请求延迟
525 13
|
XML JSON API
淘宝商品详情API的调用流程(python请求示例以及json数据示例返回参考)
JSON数据示例:需要提供一个结构化的示例,展示商品详情可能包含的字段,如商品标题、价格、库存、描述、图片链接、卖家信息等。考虑到稳定性,示例应基于淘宝开放平台的标准响应格式。
|
10月前
|
JSON 网络安全 数据格式
Python网络请求库requests使用详述
总结来说,`requests`库非常适用于需要快速、简易、可靠进行HTTP请求的应用场景,它的简洁性让开发者避免繁琐的网络代码而专注于交互逻辑本身。通过上述方式,你可以利用 `requests`处理大部分常见的HTTP请求需求。
755 51
|
8月前
|
数据采集 Web App开发 前端开发
处理动态Token:Python爬虫应对AJAX授权请求的策略
处理动态Token:Python爬虫应对AJAX授权请求的策略
|
9月前
|
JSON JavaScript API
Python模拟HTTP请求实现APP自动签到
Python模拟HTTP请求实现APP自动签到
|
12月前
|
网络协议 API 开发者
分析http.client与requests在Python中的性能差异并优化。
合理地选择 `http.client`和 `requests`库以及在此基础上优化代码,可以帮助你的Python网络编程更加顺利,无论是在性能还是在易用性上。我们通常推荐使用 `requests`库,因为它的易用性。对于需要大量详细控制的任务,或者对性能有严格要求的情况,可以考虑使用 `http.client`库。同时,不断优化并管理员连接、设定合理超时和重试都是提高网络访问效率和稳定性的好方式。
273 19
|
11月前
|
JSON 数据格式 Python
解决Python requests库POST请求参数顺序问题的方法。
总之,想要在Python的requests库里保持POST参数顺序,你要像捋顺头发一样捋顺它们,在向服务器炫耀你那有条不紊的数据前。抓紧手中的 `OrderedDict`与 `json`这两把钥匙,就能向服务端展示你的请求参数就像经过高端配置的快递包裹,里面的商品摆放井井有条,任何时候开箱都是一种享受。
221 10

推荐镜像

更多