使用Python编写HTTP客户端的Cookie问题

使用Python编写HTTP客户端的Cookie问题

大家好. 我是Python新手, 以前主要使用PHP等, 没用过Python.

现在需要用Python写一个HTTP客户端, 先POST到登录页面登录, 然后访问其它的页面. 请问如何解析和保存登录页面返回的 Cookie 并使用在下一个请求中?

因为还要发送 Raw POST 请求, 所以好像不能使用 urllib 吧? 我的想法是使用 httplib.

希望Python的朋友帮助下, 谢谢.
可以采用twill模块,或者参考twill的代码;
谢谢回复. 不过, 好像 twill 不是内建的模块吧? 第三方模块暂时还不考虑使用.
为什么不用第三方模块呢 这可是python最大的资源了
urllib2可以做到吧。在你的应用中,你可以先登录,然后再去访问你的页面(把登录得到的cookie加到后面的请求里,就行了)

我就是这么做的。你也可以使用httplib2这个,挺不错的。


QUOTE:
原帖由 neptune_hay 于 2007-8-29 20:37 发表
urllib2可以做到吧。在你的应用中,你可以先登录,然后再去访问你的页面(把登录得到的cookie加到后面的请求里,就行了)

我就是这么做的。你也可以使用httplib2这个,挺不错的。

使用urllib2 可以更改 Content-Type 吗?
cookies=urllib2.HTTPCookieProcessor()
myopener=urllib2.build_opener(cookies)
myopener.addheaders = [('Accept-Language','en-us'),('Content-Type','...')]
不过,如果是POST, urllib会自动加上Content-Type
所以这个时候
不能用myopener.open(url,post_data)的方法

而是要用
req=urllib2.Request(url,None,{'Content-type':'multipart/form-data; boundary=%s' % boundary})
u=myopener.open(req,post_data)

基本上用到的技巧都在这里了.
你还可以看看urlgrabber模块. 这个是YUM用到的
尽量不用第三方模块,或者不用非系统自带的第三方模块,可以提高系统部署的便捷性,以及平台升级,迁移的灵活性.
谢谢 ttvast 和各位的帮助, 已经解决了这个问题.