作者:路人不会编程 | 来源:互联网 | 2023-08-23 17:32
Python的Requests库-语法requests.nameofmethod(parameters)背景与入门_requests_库有几种GET的方法。第一部分和第二部分
语法
requests.nameofmethod(parameters)
背景与入门
_requests_库有几种GET的方法。第一部分和第二部分涉及到了许多在requests.get()
。这篇文章的重点是_GET_的其余方法以及错误处理。
如果计算机上不存在requests库,请浏览第一部分的说明。
"get "请求"头文件"
默认情况下,这个值是None
。如果True
,一个HTTPS头信息的字典 就会传输到指定的URL。
当一个HTTP_请求_发起时,一个User-Agent字符串与请求一起传输,这个字符串包含你的系统的以下细节。
- 应用程序类型
- 操作系统
- 软件供应商
- 请求的用户代理的软件版本
该服务器使用这些细节来确定你的计算机的能力。
在这个例子中,这段代码将向服务器发送其头信息:
- 第[1]行导入
request
库
- 第[2]行将一个格式良好的User-Agent字符串保存到_hdrs_变量中
- 第[3]行尝试连接到URL,并将头信息设置为hdrs
- 第[4]行将头信息响应输出到终端
- 第[5]行关闭打开的连接
代码
import requests
hdrs = {
"Connection": "keep-alive",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML,
like Gecko) Chrome/72.0.3626.121 Safari/537.36"}
respOnse= requests.get('https://app.finxter.com', headers=hdrs)
print(response.headers)
response.close()
输出
{'Server': 'nginx/1.14.0 (Ubuntu)', 'Date': 'Fri, 05 Nov 2021 16:59:19 GMT', 'Content-Type': 'text/html; charset=utf-8',
'Transfer-Encoding': 'chunked', 'Connection': 'keep-alive', 'X-Frame-Options': 'DENY', 'Vary': 'COOKIE', 'X-Content-Type-Options': 'nosniff', 'Set-COOKIE': 'sessiOnid=0fb6y6y5d8xoxacstf74ppvacpmt2tin; expires=Fri, 19 Nov 2021 16:59:19 GMT; HttpOnly; Max-Age=19600; Path=/; SameSite=Lax', 'Content-Encoding': 'gzip'}
注意:这是一个伟大的Python功能。如果你对Web Scraping感兴趣,你可能想进一步深入研究这个话题。
"get "请求"代理机构"
如果你是一个狂热的网络搜刮者,或者需要保持你在网上的隐蔽性,使用代理就是答案。 代理将你的IP地址从外部世界隐藏起来。
在这个例子中,我们从一个免费的代理服务中获得一个新的IP地址,并将其添加到一个字典中。
- 第[1]行导入
request
库
- 第[2]行设置一个URL到the_url 变量
- 第[3]行以字典的形式添加了一个新的代理,截至目前
- 第[4]行尝试连接到该URL,并将代理设置为my_proxy
- 第[5]行将状态代码响应输出到终端
- 第[6]行关闭开放连接
代码
import requests
the_url = 'https://somewebsite.com'
my_proxy = {"https": "https:157.245.222.225:3128"}
respOnse= requests.get(the_url, proxies=my_proxy)
print(response.status_code)
response.close()
输出
200
"get" 请求。"流"
这个方法是不需要的。默认情况下,这个值是False
。 如果False
,响应传输表明文件应该立即下载。如果是True
,则将文件流化
- 第[1]行导入
request
库
- 第[2]行将_URL_设置为logo位置,并将stream设置为True
- 第[3]行输出状态代码响应到终端
- 第[4]行关闭开放连接
代码
import requests
respOnse= requests.get('https://app.finxter.com/static/favicon_coffee.png', stream=True)
print(response.status_code)
response.close()
输出
200
异常处理
有大量的异常与request
'_s_库有关
有两种方法来处理这种情况
单独处理
在这个例子中,我们将一个 超时 到requests.get()
。如果连接或服务器超时,将发生异常:
- 第[1]行导入
request
库
- 第[2]行初始化了_try_语句。这里的代码将首先运行
- 第[3]行尝试连接到URL并设置超时
- 第[4]行将状态代码输出到终端
- 第[5]行关闭开放的连接
- 第[6]行是_except_语句。如果发生超时,代码会落到这里
- 第[7]行向终端输出信息_Timed Out!_脚本就结束了
代码
import requests
try:
respOnse= requests.get('https://app.finxter.com', timeout=(2,4))
print(response.status_code)
response.close()
except requests.ConnectTimeout():
print('Timed Out!')
输出
200
所有异常
_请求_库中的所有异常都继承自 requests.exceptions.RequestException。对于这个例子,这段代码捕获了所有的异常
- 第[1]行导入
request
库
- 第[2]行初始化了_try_语句。这里的代码将首先运行
- 第[3]行尝试连接到URL并设置超时
- 第[4]行将状态代码输出到终端
- 第[5]行关闭开放的连接
- 第[6]行是_except_语句,如果有任何异常发生,代码会落到这里
- 第[7]行将异常信息(e)输出到终端,脚本结束
代码
import requests
try:
respOnse= requests.get('https://app.finxter.com', timeout=(2,4))
print(response.status_code)
response.close()
except requests.exceptions.RequestException as e:
print(e)
输出
200
另外
你也可以把上面的内容转换成一个可重用的函数,通过修改这段代码以满足不同需求
代码
def error_code(url):
try:
respOnse= requests.get('https://app.finxter.c', timeout=(2,4))
except requests.exceptions.RequestException as e:
return e
nok = error_code('https://app.finxter.com')
print(nok)
总结
在这篇文章中,我们学习了如何。