我是python的新手,我现在试图用urllib2发送一个cookie,我感到震惊了几天。所以,基本上,在我想要的页面上,我从firebug看到有一个“发送的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()
..正如你所看到的,我尝试过几件事:
然而,这些似乎并不像我想的那样在特定的list_order(height)中呈现页面。我想知道是否有人可以指出我如何使用urllib2发送cookie信息的正确方向
感谢。
答案 0 :(得分:5)
生成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 libary使用的格式,不知道是否与任何浏览器兼容,但易于阅读且不会丢失有关RFC 2965 cookie的信息。
因此它与现代浏览器生成的cookie.txt不兼容。如果您尝试加载它,则会获得:LoadError: 'cookies.txt' does not look like a Set-Cookie3 (LWP) format file
。
你可以做OP并转换文件:
chrome扩展程序的输出格式有问题。我只是用Google搜索了lwp问题并发现:code.activestate.com/recipes/302930-cookielib-example代码以lwp格式吐出cookie,然后按照原样按照你的步骤操作。 - James W
您也可以使用此Firefox addon,然后使用“工具 - >导出Cookie”。确保cookies.txt文件中的第一行是“#Netscape HTTP Cookie File”并使用:
cj = cookielib.MozillaCookieJar('/path/to/my/cookies.txt')
cj.load()
答案 1 :(得分:0)
您最好查看Python的'request'模块,使HTTP比通过低级urllib模块更容易接近。
见
http://docs.python-requests.org/en/latest/user/quickstart/#cookies