您的位置:首页 > 编程语言 > Python开发

python的cookie操作

2012-08-22 16:22 274 查看
http://www.cnpythoner.com/post/30.html

今天晚上不是很忙,所以早早的就在电脑的旁边开始写东西了。我今天给大家分享一个我自己用python写的自动登录 人人网的脚本,没办法就是懒!懒的输入帐号和密码,让python给我们减少工作量!
先上脚本吧,等下来讲下知识点:

#!/usr/bin/env python

#encoding=utf-8

import sys

import re

import urllib2

import urllib

import cookielib

class Renren(object):

def __init__(self):

self.name = self.pwd = self.content = self.domain =self.origURL = ''

self.operate = ''#登录进去的操作对象

self.cj = cookielib.LWPCookieJar()

try:

self.cj.revert('renren.coockie')

except Exception,e:

print e

self.opener =urllib2.build_opener(urllib2.HTTPCookieProcessor(self.cj))

urllib2.install_opener(self.opener)

def setinfo(self,username,password,domain,origURL):

'''设置用户登录信息'''

self.name = username

self.pwd = password

self.domain = domain

self.origURL = origURL

def login(self):

'''登录人人网'''

params ={'domain':self.domain,'origURL':self.origURL,'email':self.name,'password':self.pwd}

print 'login.......'

req = urllib2.Request(

'http://www.renren.com/PLogin.do',

urllib.urlencode(params)

)

self.operate = self.opener.open(req)

if self.operate.geturl() == 'http://www.renren.com/Home.do':

print 'Logged on successfully!'

self.cj.save('renren.coockie')

self.__viewnewinfo()

else:

print 'Logged on error'

def __viewnewinfo(self):

'''查看好友的更新状态'''

self.__caiinfo()

def __caiinfo(self):

'''采集信息'''

h3patten = re.compile('<h3>(.*?)</h3>')#匹配范围

apatten = re.compile('<a.+>(.+)</a>:')#匹配作者

cpatten = re.compile('</a>(.+)\s')#匹配内容

infocontent = self.operate.readlines()

# print infocontent

print 'friend newinfo:'

for i in infocontent:

content = h3patten.findall(i)

if len(content) != 0:

for m in content:

username = apatten.findall(m)

info = cpatten.findall(m)

if len(username) !=0:

print username[0],'说:',info[0]

print '----------------------------------------------'

else:

continue

ren = Renren()

username = ''#你的人人网的帐号

password = ''#你的人人网的密码

domain = 'renren.com'#人人网的地址

origURL = 'http://www.renren.com/Home.do'#人人网登录以后的地址

ren.setinfo(username,password,domain,origURL)

ren.login()

主要用到了python cookielib,urllib2,urllib这3个模块,这3个模块是python做http这方面比较好的模块.

self.cj = cookielib.LWPCookieJar()

try:

self.cj.revert('renren.coockie')

except Exception,e:

print e

self.opener =urllib2.build_opener(urllib2.HTTPCookieProcessor(self.cj))

urllib2.install_opener(self.opener)

这几行是在本地建立人人网的cookies,因为人人网要验证cookies才能登录,你运行这个脚本的话,会发现在当前目录 有个程序会自动建立一个renren.cookie这个文件。

我这里renren.cookie的信息是: #LWP-Cookies-2.0 Set-Cookie3: WebOnLineNotice_244225225=1; path="/"; domain=".renren.com"; path_spec; domain_dot; expires="2010-04-11 06:59:33Z"; version=0 总结一下如果网站登录要用cookie的话,就要用到cookielib这个模块,不然你用程序登录不了网站,过断时间在写个urlib的例子,大家可以先用上面这个脚本玩玩!体会

学习PYTHON

#!/usr/bin/python
#-*-coding:utf-8-*-

import httplib,urllib;  #加载模块

#定义需要进行发送的数据
params = urllib.urlencode({'title':'标题','content':'文章'});
#定义一些文件头
headers = {"Content-Type":"application/x-www-form-urlencoded",
"Connection":"Keep-Alive","Referer":"http://mod.qlj.sh.cn/sing/post.php"};
#与网站构建一个连接
conn = httplib.HTTPConnection("http://mod.qlj.sh.cn/sing/");
#开始进行数据提交   同时也可以使用get进行
conn.request(method="POST",url="post.php",body=params,headers=headers);
#返回处理后的数据
response = conn.getresponse();
#判断是否提交成功
if response.status == 302:
print "发布成功!";
else:
print "发布失败";
#关闭连接
conn.close();


不使用COOKIES 简单提交

import urllib2, urllib

data = {'name' : 'www', 'password' : '123456'}
f = urllib2.urlopen(
url     = 'http://www.ideawu.net/',
data    = urllib.urlencode(data)
)
print f.read()


使用COOKIES 复杂

import urllib2

cookies = urllib2.HTTPCookieProcessor()
opener = urllib2.build_opener(cookies)

f = opener.open('http://www.ideawu.net/?act=login&name=user01')

data = '<root>Hello</root>'
request = urllib2.Request(
url     = 'http://www.ideawu.net/?act=send',
headers = {'Content-Type' : 'text/xml'},
data    = data)

opener.open(request)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: