python登录豆瓣并发帖的方法


Posted in Python onJuly 08, 2015

本文实例讲述了python登录豆瓣并发帖的方法。分享给大家供大家参考。具体如下:

这里涉及urllib、urllib2及cookielib常用方法的使用

登录豆瓣,由于有验证码,采取的办法是将验证码图片下载到同目录下,查看图片后输入验证码即可登录、发帖

帖子内容写死在代码中了 

# -- coding:gbk --
import sys, time, os, re
import urllib, urllib2, cookielib
loginurl = 'https://www.douban.com/accounts/login'
cookie = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie))
params = {
"form_email":"your email",
"form_password":"your password",
"source":"index_nav" #没有的话登录不成功
}
#从首页提交登录
response=opener.open(loginurl, urllib.urlencode(params))
#验证成功跳转至登录页
if response.geturl() == "https://www.douban.com/accounts/login":
  html=response.read()
  #验证码图片地址
  imgurl=re.search('<img id="captcha_image" src="(.+?)" alt="captcha" class="captcha_image"/>', html)
  if imgurl:
    url=imgurl.group(1)
    #将图片保存至同目录下
    res=urllib.urlretrieve(url, 'v.jpg')
    #获取captcha-id参数
    captcha=re.search('<input type="hidden" name="captcha-id" value="(.+?)"/>' ,html)
    if captcha:
      vcode=raw_input('请输入图片上的验证码:')
      params["captcha-solution"] = vcode
      params["captcha-id"] = captcha.group(1)
      params["user_login"] = "登录"
      #提交验证码验证
      response=opener.open(loginurl, urllib.urlencode(params))
      ''' 登录成功跳转至首页 '''
      if response.geturl() == "http://www.douban.com/":
        print 'login success ! '
        print '准备进行发帖'
        p={"ck":""}
        c = [c.value for c in list(cookie) if c.name == 'ck']
        if len(c) > 0:
          p["ck"] = c[0].strip('"')    
        addtopicurl="http://www.douban.com/group/python/new_topic"
        res=opener.open(addtopicurl)
        html=res.read()
        m= re.search('<input type="hidden" name="topic_id" value="(.+?)">', html) 
        p["topic_id"] = m.group(1)
        m= re.search('<input type="hidden" name="topic_id_sig" value="(.+?)">', html) 
        p["topic_id_sig"] = m.group(1)
        p["rev_title"] = 'title'
        p["rev_text"] = 'send body'
        p["rev_submit"] = '好了,发言'
        request=urllib2.Request(addtopicurl)
        request.add_header("User-Agent","Mozilla/5.0 (Windows NT 6.1) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.57 Safari/536.11")
        request.add_header("Accept-Charset", "GBK,utf-8;q=0.7,*;q=0.3")
        request.add_header("Origin", "http://www.douban.com")
        request.add_header("Referer", "http://www.douban.com/group/python/new_topic")
        opener.open(request, urllib.urlencode(p))

希望本文所述对大家的Python程序设计有所帮助。

Python 相关文章推荐
跟老齐学Python之list和str比较
Sep 20 Python
关于pip的安装,更新,卸载模块以及使用方法(详解)
May 19 Python
python先序遍历二叉树问题
Nov 10 Python
python Celery定时任务的示例
Mar 13 Python
python简单贪吃蛇开发
Jan 28 Python
利用Python小工具实现3秒钟将视频转换为音频
Oct 29 Python
解决reload(sys)后print失效的问题
Apr 25 Python
解决pycharm中的run和debug失效无法点击运行
Jun 09 Python
浅谈pytorch中torch.max和F.softmax函数的维度解释
Jun 28 Python
python上selenium的弹框操作实现
Jul 13 Python
python把一个字符串切开的实例方法
Sep 27 Python
python实现定时发送邮件
Dec 23 Python
python发送HTTP请求的方法小结
Jul 08 #Python
python友情链接检查方法
Jul 08 #Python
Python抓取百度查询结果的方法
Jul 08 #Python
Python抓取淘宝下拉框关键词的方法
Jul 08 #Python
Python根据区号生成手机号码的方法
Jul 08 #Python
Python写入CSV文件的方法
Jul 08 #Python
Python打印斐波拉契数列实例
Jul 07 #Python
You might like
PHP生成二维码的两个方法和实例
2014/07/01 PHP
php格式文件打开的四种方法
2018/02/24 PHP
javascript采用数组实现tab菜单切换效果
2012/12/12 Javascript
js获取数组的最后一个元素
2015/04/14 Javascript
关于JS中match() 和 exec() 返回值和属性的测试
2016/03/21 Javascript
如何学JavaScript?前辈的经验之谈
2016/12/28 Javascript
nodeJs链接Mysql做增删改查的简单操作
2017/02/04 NodeJs
JS常用倒计时代码实例总结
2017/02/07 Javascript
简述jQuery Easyui一些用法
2017/08/01 jQuery
浅谈在koa2中实现页面渲染的全局数据
2017/10/09 Javascript
vue刷新和tab切换实例
2018/02/11 Javascript
JavaScript实现的文本框placeholder提示文字功能示例
2018/07/25 Javascript
JavaScript中创建原子的方法总结
2018/08/26 Javascript
如何手动实现es5中的bind方法详解
2018/12/07 Javascript
小程序自定义单页面、全局导航栏的实现代码
2019/03/15 Javascript
详解javascript中的Error对象
2019/04/25 Javascript
bootstrap table实现iview固定列的效果实例代码详解
2019/09/30 Javascript
小程序实现长按保存图片的方法
2019/12/31 Javascript
Python类的用法实例浅析
2015/05/27 Python
基于python 处理中文路径的终极解决方法
2018/04/12 Python
ipython和python区别详解
2019/06/26 Python
python实现基于朴素贝叶斯的垃圾分类算法
2019/07/09 Python
Django如何使用第三方服务发送电子邮件
2019/08/14 Python
查看已安装tensorflow版本的方法示例
2020/04/19 Python
如何用css3实现switch组件开关的方法
2018/02/09 HTML / CSS
深入探究HTML5的History API
2015/07/09 HTML / CSS
基于html5 DeviceOrientation 实现微信摇一摇功能
2015/09/25 HTML / CSS
前端实现打印图像功能
2019/08/27 HTML / CSS
介绍一下gcc特性
2012/01/20 面试题
加强机关作风建设心得体会
2014/10/22 职场文书
教师党的群众路线教育实践活动学习笔记
2014/11/05 职场文书
模范教师材料大全
2014/12/16 职场文书
会计人员岗位职责
2015/02/03 职场文书
九年级语文教学反思
2016/03/03 职场文书
CSS实现切角+边框+投影+内容背景色渐变效果
2021/11/01 HTML / CSS
Linux、ubuntu系统下查看显卡型号、显卡信息详解
2022/04/07 Servers