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连接池实现示例程序
Nov 26 Python
python获取外网ip地址的方法总结
Jul 02 Python
Python使用redis pool的一种单例实现方式
Apr 16 Python
python机器学习库常用汇总
Nov 15 Python
matplotlib中legend位置调整解析
Dec 19 Python
Python中使用支持向量机(SVM)算法
Dec 26 Python
Linux(Redhat)安装python3.6虚拟环境(推荐)
May 05 Python
DES加密解密算法之python实现版(图文并茂)
Dec 06 Python
python文件绝对路径写法介绍(windows)
Dec 25 Python
使用卷积神经网络(CNN)做人脸识别的示例代码
Mar 27 Python
python删除指定列或多列单个或多个内容实例
Jun 28 Python
基于PyQT5制作一个桌面摸鱼工具
Feb 15 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设计模式之工厂模式用法经典实例分析
2019/09/20 PHP
JavaScript EasyPager 分页函数
2011/05/25 Javascript
Jquery 1.9.1源码分析系列(十二)之筛选操作
2015/12/02 Javascript
理解AngularJs指令
2015/12/10 Javascript
JavaScript中ES6字符串扩展方法
2016/08/26 Javascript
jqGrid翻页时数据选中丢失问题的解决办法
2017/02/13 Javascript
使用yeoman构建angular应用的方法
2017/08/14 Javascript
详解使用React全家桶搭建一个后台管理系统
2017/11/04 Javascript
Vue中this.$router.push参数获取方法
2018/02/27 Javascript
详谈vue+webpack解决css引用图片打包后找不到资源文件的问题
2018/03/06 Javascript
layer.close()关闭进度条和Iframe窗的方法
2018/08/17 Javascript
Vue-CLI3.x 设置反向代理的方法
2018/12/06 Javascript
为什么要使用Vuex的介绍
2019/01/19 Javascript
Vuex中实现数据状态查询与更改
2019/11/08 Javascript
如何解决vue在ios微信&quot;复制链接&quot;功能问题
2020/03/26 Javascript
Openlayers实现测量功能
2020/09/25 Javascript
[59:00]OG vs TNC 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
python分割和拼接字符串
2013/11/01 Python
python实现基本进制转换的方法
2015/07/11 Python
使用PIL(Python-Imaging)反转图像的颜色方法
2019/01/24 Python
python线程信号量semaphore使用解析
2019/11/30 Python
python脚本后台执行方式
2019/12/21 Python
Python3+selenium配置常见报错解决方案
2020/08/28 Python
Django执行源生mysql语句实现过程解析
2020/11/12 Python
HTML5 input元素类型:email及url介绍
2013/08/13 HTML / CSS
你所知道的集合类都有哪些?主要方法?
2012/12/31 面试题
电子商务应届生求职信
2013/11/16 职场文书
行政主管岗位职责
2013/11/18 职场文书
婚庆公司的创业计划书
2014/01/22 职场文书
安全生产大检查方案
2014/05/07 职场文书
建筑节能汇报材料
2014/08/22 职场文书
送达通知书
2015/04/25 职场文书
小学生节水倡议书
2015/04/29 职场文书
让世界充满爱观后感
2015/06/10 职场文书
市级三好生竞选稿
2015/11/21 职场文书
html2 canvas svg不能识别的解决方案
2021/06/03 HTML / CSS