update python_requests.py

master
xianhu 2016-11-29 10:28:47 +08:00
parent 4ec4d1ffc8
commit 84c33427a2
1 changed files with 15 additions and 3 deletions

View File

@ -4,7 +4,7 @@
python_requests.py by xianhu python_requests.py by xianhu
""" """
import requests import requests.adapters
# 不同方式获取网页内容, 返回一个Response对象, 请求的参数可以为url或Request对象 # 不同方式获取网页内容, 返回一个Response对象, 请求的参数可以为url或Request对象
r0 = requests.get("https://github.com/timeline.json") r0 = requests.get("https://github.com/timeline.json")
@ -181,7 +181,7 @@ requests.get("https://github.com", timeout=(3.05, 27))
# 若请求超过了设定的最大重定向次数, 则会抛出一个 TooManyRedirects 异常 # 若请求超过了设定的最大重定向次数, 则会抛出一个 TooManyRedirects 异常
# 所有Requests显式抛出的异常都继承自 requests.exceptions.RequestException # 所有Requests显式抛出的异常都继承自 requests.exceptions.RequestException
# 所有异常 # 所有异常:
# exception requests.RequestException(*args, **kwargs): There was an ambiguous exception that occurred while handling your request. # exception requests.RequestException(*args, **kwargs): There was an ambiguous exception that occurred while handling your request.
# exception requests.ConnectionError(*args, **kwargs): A Connection error occurred. # exception requests.ConnectionError(*args, **kwargs): A Connection error occurred.
# exception requests.HTTPError(*args, **kwargs): An HTTP error occurred. # exception requests.HTTPError(*args, **kwargs): An HTTP error occurred.
@ -223,7 +223,7 @@ proxies = {
requests.get("http://example.org", proxies=proxies) requests.get("http://example.org", proxies=proxies)
# 若代理需要使用HTTP Basic Auth, 可以使用http://user:password@host:port/, 比如"http": "http://user:pass@10.10.1.10:3128/" # 若代理需要使用HTTP Basic Auth, 可以使用http://user:password@host:port/, 比如"http": "http://user:pass@10.10.1.10:3128/"
# 除了基本的 HTTP 代理, Request 还支持 SOCKS 协议的代理 # 除了基本的 HTTP 代理, Request 还支持 SOCKS 协议的代理, 此时需要单独安装:
# $ pip install requests[socks] # $ pip install requests[socks]
proxies = { proxies = {
"http": "socks5://user:pass@host:port", "http": "socks5://user:pass@host:port",
@ -231,5 +231,17 @@ proxies = {
} }
requests.get("http://example.org", proxies=proxies) requests.get("http://example.org", proxies=proxies)
# Requests 传输适配器
# 从 v1.0.0 以后Requests 的内部采用了模块化设计。部分原因是为了实现传输适配器Transport Adapter
# 传输适配器提供了一个机制,让你可以为 HTTP 服务定义交互方法。尤其是它允许你应用服务前的配置。
# Requests 自带了一个传输适配器,也就是 HTTPAdapter。 这个适配器使用了强大的 urllib3为 Requests 提供了默认的 HTTP 和 HTTPS 交互。
# 每当 Session 被初始化,就会有适配器附着在 Session 上,其中一个供 HTTP 使用,另一个供 HTTPS 使用。
# Request 允许用户创建和使用他们自己的传输适配器,实现他们需要的特殊功能。创建好以后,传输适配器可以被加载到一个会话对象上,附带着一个说明,告诉会话适配器应该应用在哪个 web 服务上。
s = requests.Session()
s.mount("http://baidu.com", requests.adapters.HTTPAdapter())
# 出现错误: Connection pool is full, discarding connection: xxxx.com
s.mount('https://', requests.adapters.HTTPAdapter(pool_connections=100, pool_maxsize=100))
# 关闭InsecurePlatformWarning # 关闭InsecurePlatformWarning
# requests.packages.urllib3.disable_warnings() # requests.packages.urllib3.disable_warnings()