- Python Requests Library - 你在Python中的第一个HTTP请求
一般方法语法
requests.nameofmethod(parameters)
背景介绍
该 请求库为Python程序员提供了对网站的简单访问。通过使用这个库,编码员可以连接、访问和执行各种数据操作任务。周围有很多库可以进行 HTTP 请求。然而,请求库似乎是最受欢迎的。
当该 请求库发送一个URL时,会发生以下情况。
- DNS查询将URL转换为一个IP地址(例如:
312.245.123.21)。 request库向这个IP地址发送一个请求。- 服务器试图验证这个请求。
- 服务器返回一个状态代码,如下图所示。
如果requests 库在计算机上不存在,请在继续之前导航到 安装所需的库然后再继续。
状态代码
HTTP响应状态代码分为五类或类别。状态代码的第一个数字定义了响应的类别。后面两个数字没有任何分类或归类的作用。这五个类别是:
| 1XX | 信息性响应 | 收到请求后继续处理。 |
| 2XX | 成功 | 请求被成功接收,理解并接受。 |
| 3XX | 重新定向 | 需要进一步的行动来完成该请求。 |
| 4XX | 客户端错误 | 请求包含无效的语法或不完整的数据。 |
| 5XX | 服务器错误 | 服务器未能满足一个有效的请求。 |
安装所需的库
在任何请求发生之前,将需要安装一个新的库。请求库允许访问它的许多方法,并使数据操作变得轻而易举!
要安装这个库,请导航到一个IDE 终端。在命令提示符()。你的终端提示可能不同。
$ pip install requests
点击键盘上的键,开始安装过程。
如果安装成功,终端上会显示一条信息,表明这一点。
"获取 "请求。提出请求
这个方法使用GET请求来连接到一个网站。这个函数需要一个URL作为参数。在这个例子中,会返回一个状态码并显示连接的状态(成功/失败)。 如果无效,脚本会突然结束。
运行这个脚本。如果成功,一个以2XX开头的状态代码会输出到终端。
- 第[1]行导入
request库。 - 第[2]行试图连接到URL。
- 第[3&4]行输出状态代码。这两行做的是同样的事情。
- 第[5]行关闭打开的连接。
import requests
print(response.status_code)
response = requests.get('https://books.toscrape.com')
或
import requests
print(requests.codes.ok)
response.close()
输出
200
200
如上所述,如果你的状态代码不是200,很有可能脚本会失败。为了防止这种情况,可以用一个try/except语句来包装代码。
- 第[1]行导入
request库。 - 第[2]行初始化了try语句。这里的代码将首先运行。
- 第[3]行执行一个GET请求,连接到URL。
- 第[4]行如果成功,OK将输出到终端。
- 第[5]行关闭打开的连接。
- 第[6]行是except语句。如果try语句失败,代码就会落到这里。
- 第[7]行向终端输出Error消息。脚本结束了。
代码:
import requests
try:
response = requests.get('https://books.toscrape.com')
print('OK')
response.close()
except:
print('Error')
"get "请求。响应内容
当下面的代码运行时,请求的网页上的HTML代码会输出到终端。
- 第[1]行导入
request库。 - 第[2]行初始化了try语句。这里的代码将首先运行。
- 第[3]行执行一个GET请求,连接到URL。
- 第[4]行如果成功,OK将输出到终端。
- 第[5]行关闭打开的连接。
- 第[6]行是except语句。如果try语句失败,代码就会落到这里。
- 第[7]行将错误输出到终端。脚本结束了。
代码:
import requests
try:
response = requests.get('https://books.toscrape.com')
print(response.text)
response.close()
except:
print('Error')
输出
下面显示的是HTML代码的一小部分。
<article class="product_pod">
<div class="image_container">
<a href="catalogue/the-boys-in-the-boat-nine-americans-and-their-epic-quest-for-gold-at-the-1936-berlin-olympics_992/index.html"><img src="media/cache/66/88/66883b91f6804b2323c8369331cb7dd1.jpg" alt="The Boys in the Boat: Nine Americans and Their Epic Quest for Gold at the 1936 Berlin Olympics" class="thumbnail"></a>
</div>
...
使用 "timeout"
这个方法允许编码者设置代码在超时前等待多长时间。
- 一个连接
- 响应
在下面的例子中,连接时间等于2秒。响应时间等于4秒。
最好的做法是将超时参数添加到每个请求中。
注意:如果不输入,代码可以在崩溃前挂起两分钟。依赖于浏览器。
- 第[1]行导入
request库。 - 第[2]行初始化了try语句。这里的代码将首先运行。
- 第[3]行执行一个GET请求以连接到URL,并设置一个超时。
- 第[4]行如果响应成功,URL的HTML代码将输出到终端。
- 第[5]行关闭开放连接。
- 第[6]行是except语句。如果try语句失败,代码就会落到这里。
- 第[7]行输出Error到终端。脚本自动终止。
代码。
import requests
try:
response = requests.get('https://books.toscrape.com', timeout=(2, 4))
print(response.text)
response.close()
except:
print('Error')
输出
见上文。
总结
在这篇文章中,我们学习了如何:
- 连接到一个URL
- 检索和显示状态代码
- 将HTML代码输出到终端
- 使用try/except语句来捕捉错误
- 设置一个超时
- 关闭任何开放的连接