【问题标题】:python urllib2 not returning https pagepython urllib2不返回https页面
【发布时间】:2011-12-09 15:24:47
【问题描述】:

当我尝试将数据从 http 发布到 https 时,urllib2 不会返回所需的 https 网页,而是网站要求启用 cookie。

获取第一个 http 页面:

    proxyHandler = urllib2.ProxyHandler({'http': "http://proxy:port" })
    opener = urllib2.build_opener(proxyHandler)
    opener.addheaders = [('User-agent', 'Mozilla/5.0 (Windows NT 6.1; rv:8.0) Gecko/20100101 Firefox/8.0')]
    urllib2.install_opener(opener)
    resp = urllib2.urlopen(url)
    content = resp.read()

当我从上面的页面提取数据并将数据发布到第二个 https 页面时,urllib2 返回成功状态 200 并且页面要求启用 cookie。

我检查了帖子数据,没问题。我正在从网站获取 cookie,但不确定它们是否与下一个请求一起发送,因为我在 python 文档中读到 urllib2 自动处理 cookie。

获取第二个 https 页面:

    resp = urllib2.urlopen(url, data=postData)
    content = resp.read()

我还尝试将代理处理程序设置为此作为在某处 stackoverflow 上对类似问题的回复中读取但得到相同的结果:

    proxyHandler = urllib2.ProxyHandler({'https': "http://proxy:port" })

【问题讨论】:

  • 您是否有充分的理由使用 urllib2 而不是更好的库,例如 requests(最好的)或 httplib2(支持 Python 3)?
  • 我在寻找解决方案时遇到了 requests 库,但由于我是 python 新手,我认为最好先试试 python 安装的库!

标签: python http https urllib2


【解决方案1】:

urllib2 在响应中“处理”cookie,但它不会自动存储它们并在以后的请求中重新发送它们。为此,您需要使用 the cooklib module

There are some examples in the documentation 展示了它如何与urllib2 一起使用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-04-22
    • 1970-01-01
    • 2011-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多