Python 模拟登录及表单提交


01 # -*- coding: utf-8 -*- 
02 import re 
03 import urllib 
04 import urllib2 
05 import cookielib 
06    
07 #获取CSDN博客标题和正文 
08 url = "http://blog.csdn.net/[username]/archive/2010/07/05/5712850.aspx" 
09 sock = urllib.urlopen(url) 
10 html = sock.read() 
11 sock.close() 
12 content = re.findall('(?<=blogstory">).*(?=<p class="right artical)', html, re.S) 
13 content = re.findall('<script.*>.*</script>(.*)', content[0], re.S) 
14 title = re.findall('(?<=<title>)(.*)-.* - CSDN.*(?=</title>)', html, re.S) 
15 #根据上文获取内容新建表单值 
16 blog = {'spBlogTitle': title[0].decode('utf-8').encode('gbk'), #百度博客标题 
17         'spBlogText': content[0].decode('utf-8').encode('gbk'),#百度博客内容 
18         'ct'"1"
19         'cm'"1"
20 del content 
21 del title 
22    
23 #模拟登录 
24 cj = cookielib.CookieJar() 
25 #用户名和密码 
26 post_data = urllib.urlencode({'username''[username]''password''[password]''pwd':'1'}) 
27 #登录路径 
28 path = 'https://passport.baidu.com/?login' 
29 opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj)) 
30 opener.addheaders = [('User-agent''Opera/9.23')] 
31 urllib2.install_opener(opener) 
32 req = urllib2.Request(path, post_data) 
33 conn = urllib2.urlopen(req) 
34    
35 #获取百度发布博客的认证令牌 
36 bd =urllib2.urlopen(urllib2.Request('http://hi.baidu.com/[username]/creat/blog')).read() 
37 bd = re.findall('(?<=bdstoken\" value=\").*(?=ct)', bd, re.S) 
38 blog['bdstoken'= bd[0][:32
39 #设置分类名 
40 blog['spBlogCatName'= 'php' 
41 #比较表单发布博客 
42 req2 = urllib2.Request('http://hi.baidu.com/[username]/commit', urllib.urlencode(blog)) 
43    
44 #查看表单提交后返回内容 
45 print urllib2.urlopen(req2).read() 
46    
47 #请将[username]/[password]替换为您的真实用户名和密码

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值