如何用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库进行网络请求,提高爬虫编写效率。


相关文章
|
4天前
|
数据采集 存储 API
Python 网络请求:深入理解Requests库
Python 网络请求:深入理解Requests库
61 0
|
1天前
|
关系型数据库 Java 分布式数据库
实时计算 Flink版操作报错合集之在使用 Python UDF 时遇到 requests 包的导入问题,提示 OpenSSL 版本不兼容如何解决
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
14 5
|
4天前
|
JSON 数据格式 Python
Python 的 requests 库是一个强大的 HTTP 客户端库,用于发送各种类型的 HTTP 请求
【5月更文挑战第9天】`requests` 库是 Python 中用于HTTP请求的强大工具。要开始使用,需通过 `pip install requests` 进行安装。发送GET请求可使用 `requests.get(url)`,而POST请求则需结合 `json.dumps(data)` 以JSON格式发送数据。PUT和DELETE请求类似,分别调用 `requests.put()` 和 `requests.delete()`。
31 2
|
4天前
|
JSON 数据格式 开发者
pip和requests在Python编程中各自扮演着不同的角色
【5月更文挑战第9天】`pip`是Python的包管理器,用于安装、升级和管理PyPI上的包;`requests`是一个HTTP库,简化了HTTP通信,支持各种HTTP请求类型及数据交互。两者在Python环境中分别负责包管理和网络请求。
33 5
|
4天前
|
API UED Python
使用Python进行异步HTTP请求的实践指南
使用Python进行异步HTTP请求的实践指南
21 4
|
4天前
|
安全 网络安全 Python
使用 Python 代码实现 ICMP Timestamp 请求和回应
使用 Python 代码实现 ICMP Timestamp 请求和回应
|
4天前
|
JSON 测试技术 API
Python的Api自动化测试使用HTTP客户端库发送请求
【4月更文挑战第18天】在Python中进行HTTP请求和API自动化测试有多个库可选:1) `requests`是最流行的选择,支持多种请求方法和内置JSON解析;2) `http.client`是标准库的一部分,适合需要低级别控制的用户;3) `urllib`提供URL操作,适用于复杂请求;4) `httpx`拥有类似`requests`的API,提供现代特性和异步支持。根据具体需求选择,如多数情况`requests`已足够。
16 3
|
4天前
|
存储 Python
Python网络数据抓取(3):Requests
Python网络数据抓取(3):Requests
16 5
|
4天前
|
数据采集 存储 JSON
Python爬虫面试:requests、BeautifulSoup与Scrapy详解
【4月更文挑战第19天】本文聚焦于Python爬虫面试中的核心库——requests、BeautifulSoup和Scrapy。讲解了它们的常见问题、易错点及应对策略。对于requests,强调了异常处理、代理设置和请求重试;BeautifulSoup部分提到选择器使用、动态内容处理和解析效率优化;而Scrapy则关注项目架构、数据存储和分布式爬虫。通过实例代码,帮助读者深化理解并提升面试表现。
26 0
|
4天前
|
Python
使用Python的Requests库进行网络请求和抓取网页数据
【4月更文挑战第20天】使用Python Requests库进行网络请求和网页数据抓取的步骤包括:安装库(`pip install requests`)、导入库、发送GET/POST请求、检查响应状态码、解析内容、处理Cookies、设置请求头以及异常处理。通过`response`对象访问响应信息,如`status_code`、`text`、`content`和`cookies`。可设置`headers`模拟用户代理,用`try-except`处理异常。
22 7
http://www.vxiaotou.com