Python urllib3 以及如何处理 cookie 支持?

标签 python urllib3

所以我正在调查 urllib3因为它有连接池并且是线程安全的(所以性能更好,特别是对于爬行),但是文档......至少可以说是最少的。 urllib2 有 build_opener 这样的东西:

#!/usr/bin/python
import cookielib, urllib2
cj = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
r = opener.open("http://example.com/")

但是 urllib3 没有 build_opener 方法,所以到目前为止我想到的唯一方法是手动将它放在标题中:

#!/usr/bin/python
import urllib3
http_pool = urllib3.connection_from_url("http://example.com")
myheaders = {'Cookie':'some cookie data'}
r = http_pool.get_url("http://example.org/", headers=myheaders)

但我希望有更好的方法,并且你们中的一个可以告诉我它是什么。也有人可以用“urllib3”标记这个。

最佳答案

你是对的,现在没有更好的方法来做到这一点。如果您有一致的改进,我会非常乐意接受补丁。

请记住,urllib3 的 HTTPConnectionPool 旨在成为特定主机的“连接池”,而不是有状态的客户端。在这种情况下,将 cookie 的跟踪保持在实际池之外是有意义的。

  • shazow(urllib3 的作者)

关于Python urllib3 以及如何处理 cookie 支持?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2422922/

相关文章:

Python 脚本不适用于 django shell

python - 在 Django 中显示另一个表的行数

python - 比较两个不同大小的矩阵以生成一个大矩阵 - 速度改进?

python - 计算 AUC 曲线时如何创建阈值?

python - request.adapters.HTTPAdapter中的pool_connections是什么意思?

python - 哪个R包提供了类似于pythons urllib的功能

python - 如何从 Python 中删除包含字符串的字符?

python - 在编码 Visual Studio + PTVS 时是否可以使用基于远程 vagrant 的 python 解释器

python-3.x - 我无法从针对特定 URL 使用 urllib3 的 GET 请求获得响应,但我可以使用请求和 urllib 来实现吗?

python - URLlib3 HTTP 错误 502 : Bad Gateway