当前位置: 首页 > 面试题库 >

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

邹晟睿
2023-03-14
问题内容

因此,我正在研究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的作者)


 类似资料:
  • 我正在使用OkHttpClient向网站的网页url发送请求,并通过以下方法存储它提供的cookie,我仅从stackoverflow获得该方法。 有必要存储cookie,否则网站会将请求重定向到超时页面。 然后,我看到页面的html来检查我是否到达了正确的网址。 现在,我以类似于网址“www.example.com/loginPage”的方式制作另一个请求变量,并尝试查看html,但它将我重定向

  • 我的Android应用程序已经有了一个运行正常的Exoplayer实现,我需要知道Exoplayer是否支持在HDCP中播放短跑视频(以及它是如何工作的)。演示应用程序有一些具有“HDCP功能”的示例,但我在代码库中找不到任何与它如何处理这一问题有关的内容(DASH manifest文件本身是否指定了HDCP功能?)。

  • 我正试图决定如何处理猫鼬中的验证错误。 我使用节点验证器定义了自己的验证规则,例如: 这将产生如下错误: 然而,节点验证器提供了自己的错误消息。如果我使用mongoose validator节点模块将节点验证器直接插入到我的模式中,那么我可以直接使用这些错误消息: 这将生成一条错误消息,如下所示: 我也可以在此处提供自定义错误消息: Mongoose允许您根据需要定义字段: 这将生成一条错误消息,

  • Cookie 是存储在客户端计算机上的文本文件,并保留了各种跟踪信息。Java Servlet 显然支持 HTTP Cookie。 识别返回用户包括三个步骤: 服务器脚本向浏览器发送一组 Cookie。例如:姓名、年龄或识别号码等。 浏览器将这些信息存储在本地计算机上,以备将来使用。 当下一次浏览器向 Web 服务器发送任何请求时,浏览器会把这些 Cookie 信息发送到服务器,服务器将使用这些信

  • Cookie是存储在客户机的文本文件,它们保存了大量轨迹信息。在servlet技术基础上,JSP显然能够提供对HTTP cookie的支持。 通常有三个步骤来识别回头客: 服务器脚本发送一系列cookie至浏览器。比如名字,年龄,ID号码等等。 浏览器在本地机中存储这些信息,以备不时之需。 当下一次浏览器发送任何请求至服务器时,它会同时将这些cookie信息发送给服务器,然后服务器使用这些信息来识

  • 我需要用Java实现一系列HTTP请求,并决定在4.3版(最新版本)中使用Apaches HttpClient。 问题是所有这些请求都使用cookie进行会话管理,而我似乎无法找到一种方法来访问cookie并在请求之间传递它。我在使用curl时的命令如下所示: 它们工作得很好。然而,对于HttpClient,它似乎不起作用。我尝试的是: 最后一行的输出总是一个空列表。我想它应该包含我的Cookie