发送/设置cookie通过urllib2 python



我对python很陌生,几天来我一直在尝试用urllib2发送一个cookie。基本上,在我想要获取的页面上,我从firebug中看到有一个"sent cookie"它看起来像:

 list_type=height

. .它基本上按照一定的顺序排列页面上的列表。

我想通过urllib2发送上述cookie信息,以便渲染的页面将上述设置生效-这里是我试图编写的代码,以使其工作:

class Networksx(object):
    def __init__(self):
        self.cj = cookielib.CookieJar()
        self.opener = urllib2.build_opener
                #socks handler
        self.opener.addheaders = [
        ('User-Agent', 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-GB; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13'),
        ('Accept-Charset', 'ISO-8859-1,utf-8;q=0.7,*;q=0.7'),
        ('Keep-Alive', '115'),
        ('Connection', 'keep-alive'),
        ('Cache-Control', 'max-age=0'),
        ('Referer', 'http://www.google.com'),
        ("Cookie", {"list_type":"height"}),
    ]
    urllib2.install_opener(self.opener)
    self.params = { 'Set-Cookie': "list_type":"height"}
    self.encoded_params = urllib.urlencode( self.params )
    def fullinfo(self,url):
        return self.opener.open(url,self.encoded_params).read()

. .正如您所看到的,我已经尝试了一些事情:

  • 通过头文件
  • 设置参数
  • 设置cookie
然而,这些似乎不呈现页面在一定的list_order(高度),因为我想。我想知道是否有人可以指出我在正确的方向,如何发送cookie信息与urllib2

谢谢。

一个简单的方法来生成cookie.txt是这个chrome扩展:https://chrome.google.com/webstore/detail/cookietxt-export/lopabhfecdfhgogdbojmaicoicjekelh

import urllib2, cookielib
url = 'https://example.com/path/default.aspx'
txheaders =  {'User-agent' : 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'}
cj = cookielib.LWPCookieJar()
# cj.load signature: filename=None, ignore_discard=False, ignore_expires=False
cj.load('/path/to/my/cookies.txt') 
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
urllib2.install_opener(opener)
req = urllib2.Request(url, None, txheaders)
handle = urllib2.urlopen(req)
(更新)

对不起,我是从一段早已被遗忘的旧代码片段粘贴过来的。来自LWPCookieJar文档字符串:

LWPCookieJar保存了一系列"Set-Cookie3"行。"Set-Cookie3"是libwww-perl库使用的格式,不知道是否与任何浏览器兼容,但它易于阅读并且不会丢失有关RFC 2965 cookie的信息。

所以它与现代浏览器生成的cookie.txt不兼容。如果你试图加载它,你会得到:LoadError: 'cookies.txt' does not look like a Set-Cookie3 (LWP) format file .

您可以像OP一样转换文件:

有一些错误的格式输出从chrome扩展。我只是在谷歌上搜索了lwp问题,发现:code.activestate.com/recipes/302930-cookielib-example代码吐出了lwp格式的cookie,然后我按照你的步骤。——詹姆斯·W

你也可以使用这个Firefox插件,然后点击"工具->导出cookie"。确保cookies.txt文件的第一行是"# Netscape HTTP Cookie file ",并使用:

cj = cookielib.MozillaCookieJar('/path/to/my/cookies.txt')
cj.load() 

你最好看看Python的'request'模块,它使HTTP比低级urllib模块更容易接近。

http://docs.python-requests.org/en/latest/user/quickstart/饼干

最新更新