【问题标题】:Problems saving cookies when making HTTP requests using Python使用 Python 发出 HTTP 请求时保存 cookie 的问题
【发布时间】:2015-02-19 00:35:48
【问题描述】:

我正在尝试使用python制作一个网络蜘蛛,但是当我尝试登录网站Pixiv时遇到了一些问题。我的代码如下:

import sys
import urllib
import urllib2
import cookielib

url="https://www.secure.pixiv.net/login.php"

cookiename='123.txt'
cookie = cookielib.MozillaCookieJar(cookiename)
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie))
cookie.save()

values={'model':'login',
        'return_to':'/',
        'pixiv_id':'username',
        'pass':'password',
        'skip':'1'}

headers = { 'User-Agent' : 'User-Agent' }
data=urllib.urlencode(values)
req=urllib2.Request(url,data)
response=urllib2.urlopen(req)
the_page=response.read()
cookie.save()

为了确保它有效,我使用 cookielib 将 cookie 保存为 txt 文件。我运行代码并得到一个“cookie.txt”,但是当我打开文件时,我发现它是 rmpty,在另一个字,我的代码没有工作。 不知道有什么问题。

【问题讨论】:

  • 您的示例并未展示您对cookielib 的实际使用。请发布一个完整的示例来说明问题。
  • 我已经编辑了代码。我只是使用cookie=cookielib.MozillaCookieJar(cookiename)cookie.save()来保存cookie文件并得到一个空的。但是当我通过POSTMAN发布相同的数据时,它运行良好。

标签: python post web-crawler


【解决方案1】:

问题是您没有使用您创建的opener 并附加了cookiejar 来发出请求。 urllib2.urlopen 无法知道您要使用该开启程序来启动请求。

您可以直接使用打开器的open 方法,或者,如果您想在应用程序的其余部分默认使用此方法,您可以将其安装为使用urllib2 使用@987654322 发出的所有请求的默认打开器@。所以尝试一下,看看它是否有效。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-07-06
    • 2020-09-13
    • 1970-01-01
    • 2019-11-26
    • 1970-01-01
    • 2013-04-11
    • 2015-09-16
    • 1970-01-01
    相关资源
    最近更新 更多