热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Python的Requests库

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)

总结

在这篇文章中,我们学习了如何。

  • 使用头文件
  • 使用代理机构
  • 使用流
  • 实现异常处理

推荐阅读
author-avatar
路人不会编程
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有