Python实现模拟登录及表单提交的方法
本文实例讲述了Python实现模拟登录及表单提交的方法。分享给大家供大家参考。具体实现方法如下:
#-*-coding:utf-8-*- importre importurllib importurllib2 importcookielib #获取CSDN博客标题和正文 url="http://blog.csdn.net/[username]/archive/2010/07/05/5712850.aspx" sock=urllib.urlopen(url) html=sock.read() sock.close() content=re.findall('(?<=blogstory">).*(?=<pclass="rightartical)',html,re.S) content=re.findall('<script.*>.*</script>(.*)',content[0],re.S) title=re.findall('(?<=<title>)(.*)-.*-CSDN.*(?=</title>)',html,re.S) #根据上文获取内容新建表单值 blog={'spBlogTitle':title[0].decode('utf-8').encode('gbk'),#百度博客标题 'spBlogText':content[0].decode('utf-8').encode('gbk'),#百度博客内容 'ct':"1", 'cm':"1"} delcontent deltitle #模拟登录 cj=cookielib.CookieJar() #用户名和密码 post_data=urllib.urlencode({'username':'[username]','password':'[password]','pwd':'1'}) #登录路径 path='https://passport.baidu.com/?login' opener=urllib2.build_opener(urllib2.HTTPCookieProcessor(cj)) opener.addheaders=[('User-agent','Opera/9.23')] urllib2.install_opener(opener) req=urllib2.Request(path,post_data) conn=urllib2.urlopen(req) #获取百度发布博客的认证令牌 bd=urllib2.urlopen(urllib2.Request('http://hi.baidu.com/[username]/creat/blog')).read() bd=re.findall('(?<=bdstoken\"value=\").*(?=ct)',bd,re.S) blog['bdstoken']=bd[0][:32] #设置分类名 blog['spBlogCatName']='php' #比较表单发布博客 req2=urllib2.Request('http://hi.baidu.com/[username]/commit',urllib.urlencode(blog)) #查看表单提交后返回内容 printurllib2.urlopen(req2).read() #请将[username]/[password]替换为您的真实用户名和密码
希望本文所述对大家的Python程序设计有所帮助。