请允许我对“Python之 requests的使用(一)”进行详细讲解:
1. 简介
requests
是一个 Python 第三方库,可以用于发送 HTTP 请求。它简单易用,功能强大,是进行 HTTP 通信的首选工具之一。在本文中,我们将学习如何使用 requests
进行 HTTP 请求并处理响应数据。
2. 安装
要使用 requests
库,需要通过以下命令进行安装:
pip install requests
3. 发送 GET 请求
下面是使用 requests
库发送 GET 请求的基本例子:
import requests
response = requests.get('https://www.baidu.com')
print(response.text)
上述代码中,我们首先导入 requests
库,然后使用 requests.get
方法发送一个 GET 请求,请求百度的首页,并将响应数据赋值给变量 response
。最后,我们打印了响应的文本数据(使用 response.text
属性)。
需要注意的是,在发送请求时,我们需要指定完整的 URL。另外,由于 get
方法返回的是一个 Response
对象,因此我们可以通过 response.status_code
属性获取响应的状态码,通过 response.headers
属性获取响应的头部信息等等。
4. 发送 POST 请求
下面是使用 requests
库发送 POST 请求的基本例子:
import requests
url = 'https://www.baidu.com'
data = {'username': 'admin', 'password': '123456'}
response = requests.post(url, data=data)
print(response.text)
上述代码中,我们定义了请求的 URL 和请求参数 data
,然后使用 requests.post
方法发送一个 POST 请求,并将响应数据赋值给变量 response
。最终,我们打印了响应的文本数据。
需要注意的是,相较于 GET 请求,POST 请求需要传入请求参数。我们可以将参数封装为一个字典,并在请求时传入 data
参数。在 POST 请求的返回值中,服务器通常会返回一些状态信息,例如是否执行成功等,我们可以通过 response.json()
方法将返回的 JSON 数据转为 Python 对象,在代码中进行处理。
5. 其他常见请求方式
除了 GET 和 POST 请求,requests
库还支持其他 HTTP 请求方式,例如 PUT、DELETE、HEAD 等,下面是一个使用 PUT 请求的例子:
import requests
url = 'http://httpbin.org/put'
data = {'key': 'value'}
response = requests.put(url, data=data)
print(response.text)
上述代码中,我们发送了一个 PUT 请求,并将请求参数封装在字典 data
中。由于 httpbin.org
是一个测试网站,所以它会返回一些有用的信息,例如请求头部信息、请求类型,以及请求参数等(使用 response.json()
方法处理返回的 JSON 数据)。
6. 请求头的设置
在发送 HTTP 请求时,有时我们需要设置请求头部信息,例如请求的 User-Agent、Referer 等。这时可以通过在请求时传入 headers
参数进行设置。下面是一个使用自定义请求头的例子:
import requests
url = 'http://httpbin.org/get'
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.36'}
response = requests.get(url, headers=headers)
print(response.text)
上述代码中,我们通过在 GET 请求时传入 headers
参数,设置了请求的 User-Agent。httpbin.org
还会返回一些有关请求头部信息的数据供我们查看。
7. 会话管理
在实际应用中,我们经常需要维护一个会话(Session),以便保持某些状态信息,例如登陆状态、Cookie 等。requests
库提供了一个 Session
对象,用于维护一个会话状态。下面是一个使用 Session
对象的例子:
import requests
session = requests.Session()
url = 'http://httpbin.org/cookies/set/sessioncookie/123456789'
response = session.get(url) # 设置 Cookie
response = session.get('http://httpbin.org/cookies') # 发送 GET 请求
print(response.text)
上述代码中,我们首先创建了一个 Session
对象,并调用 session.get
方法设置了 Cookie。随后,我们使用同一个 Session
对象发送了一个 GET 请求,并打印了响应的文本数据。
需要注意的是,使用 Session
对象发送的请求,会自动将之前设置的 Cookie 信息带上。这样能够更方便地维护会话状态,避免了多次发送请求时需要手动添加 Cookie 的麻烦。
8. 异常处理
在发送 HTTP 请求时,可能会出现各种异常情况,例如网络故障、目标服务器宕机,或者是目标 URL 不存在等。requests
库提供了一些内置的异常类型,用于处理这些异常情况。下面是一个处理异常的例子:
import requests
try:
response = requests.get('http://www.404error.com') # 这是一个不存在的 URL
response.raise_for_status() # 通过 raise_for_status() 方法检查响应状态码
except requests.exceptions.HTTPError as e:
print(e)
except requests.exceptions.ConnectionError as e:
print(e)
except requests.exceptions.Timeout as e:
print(e)
except requests.exceptions.RequestException as e:
print(e)
上述代码中,我们使用了 requests
库内置的异常类型,并通过 try/except
语句进行异常处理。在 try
块中,我们尝试发送了一个 GET 请求,但是 URL 并不存在,会引发一个 404 错误。随后我们调用了 response.raise_for_status()
方法,用于检查响应状态码,如果状态码不是 200,会引发一个 HTTPError
异常。在 except
语句中,我们对不同类型的异常进行了处理。
需要注意的是,requests
库会自动处理一些常见的异常类型,例如 DNS 查询失败、网络超时等,如果出现这些异常,requests
库会引发一个 requests.exceptions.RequestException
异常。
综上所述,以上就是 "Python之 requests的使用(一)" 的完整攻略,其中包含了请求方法、请求头部、会话管理、异常处理等方面的内容,相信大家通过学习这篇文章可以初步掌握 requests
库在 Python 程序中的使用。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python之 requests的使用(一) - Python技术站