使用Python发出HTTP请求时保存cookie的问题

时间:2015-02-17 18:14:05

标签: python post web-crawler

我正在尝试使用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,在另一个一句话,我的代码没有用。 我不知道它有什么问题。

1 个答案:

答案 0 :(得分:0)

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

您可以直接使用开启者的open方法,或者,如果您希望在应用程序的其余部分使用此方法,则可以将其安装为使用{{1}进行的所有请求的默认开启者使用urllib2.install_opener。所以试一试,看看它是否有效。