Vic*_*gos 3 http urllib3 python-3.x python-requests bs4
我注意到有几种方法可以为Web报废提供http连接.我不确定某些是更近期和最新的编码方式,还是它们只是具有不同优点和缺点的不同模块.更具体地说,我试图了解以下两种方法之间的区别,你会推荐什么?
1)使用urllib3:
http = PoolManager()
r = http.urlopen('GET', url, preload_content=False)
soup = BeautifulSoup(r, "html.parser")
Run Code Online (Sandbox Code Playgroud)
2)使用请求
html = requests.get(url).content
soup = BeautifulSoup(html, "html5lib")
Run Code Online (Sandbox Code Playgroud)
是什么将这两个选项区分开来,除了它们需要导入不同模块的简单事实?
引擎盖下,requests使用urllib3完成大部分HTTP繁重的工作.如果使用得当,除非您需要更高级的配置,否则它应该大致相同.
除了,在您的特定示例中,它们不相同:
在urllib3示例中,您将重新使用连接,而在请求示例中,您不会重新使用连接.这是你如何告诉:
>>> import requests
>>> requests.packages.urllib3.add_stderr_logger()
2016-04-29 11:43:42,086 DEBUG Added a stderr logging handler to logger: requests.packages.urllib3
>>> requests.get('https://www.google.com/')
2016-04-29 11:45:59,043 INFO Starting new HTTPS connection (1): www.google.com
2016-04-29 11:45:59,158 DEBUG "GET / HTTP/1.1" 200 None
>>> requests.get('https://www.google.com/')
2016-04-29 11:45:59,815 INFO Starting new HTTPS connection (1): www.google.com
2016-04-29 11:45:59,925 DEBUG "GET / HTTP/1.1" 200 None
Run Code Online (Sandbox Code Playgroud)
要开始重新使用urllib3 PoolManager中的连接,您需要进行请求会话.
>>> session = requests.session()
>>> session.get('https://www.google.com/')
2016-04-29 11:46:49,649 INFO Starting new HTTPS connection (1): www.google.com
2016-04-29 11:46:49,771 DEBUG "GET / HTTP/1.1" 200 None
>>> session.get('https://www.google.com/')
2016-04-29 11:46:50,548 DEBUG "GET / HTTP/1.1" 200 None
Run Code Online (Sandbox Code Playgroud)
现在它等同于你正在做的事情http = PoolManager().还有一点需要注意:urllib3是一个更低级别更明确的库,因此您显式创建了一个池,并且您明确需要指定您的SSL证书位置.这是额外的一两行或更多的工作,但如果你正在寻找的话,也会有更多的控制权.
所有的说和做,比较变成:
1)使用urllib3:
import urllib3, certifi
http = urllib3.PoolManager(ca_certs=certifi.where())
html = http.request('GET', url).read()
soup = BeautifulSoup(html, "html5lib")
Run Code Online (Sandbox Code Playgroud)
2)使用请求:
import requests
session = requests.session()
html = session.get(url).content
soup = BeautifulSoup(html, "html5lib")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
449 次 |
| 最近记录: |