所以我正在调查 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/