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 运算符 供重载参考
Jun 11 Python
python下实现二叉堆以及堆排序的示例
Sep 29 Python
python使用os.listdir和os.walk获得文件的路径的方法
Dec 16 Python
python3+PyQt5实现文档打印功能
Apr 24 Python
python 对dataframe下面的值进行大规模赋值方法
Jun 09 Python
python实现AES加密与解密
Mar 28 Python
利用pyecharts实现地图可视化的例子
Aug 12 Python
python实现XML解析的方法解析
Nov 16 Python
解析pip安装第三方库但PyCharm中却无法识别的问题及PyCharm安装第三方库的方法教程
Mar 10 Python
使用Python Tkinter实现剪刀石头布小游戏功能
Oct 23 Python
Python并发编程实例教程之线程的玩法
Jun 20 Python
python编程实现清理微信重复缓存文件
Nov 01 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中的注释、变量、数组、常量、函数应用介绍
2012/11/16 PHP
php防止CC攻击代码 php防止网页频繁刷新
2015/12/21 PHP
使用JavaScript创建新样式表和新样式规则
2016/06/14 PHP
运用Windows XP附带的Msicuu.exe、Msizap.exe来彻底卸载顽固程序
2007/04/21 Javascript
用jscript实现列出安装的软件列表
2007/06/18 Javascript
jquery实现滑动特效代码
2015/08/10 Javascript
jquery实现最简单的滑动菜单效果代码
2015/09/12 Javascript
Jquery1.9.1源码分析系列(六)延时对象应用之jQuery.ready
2015/11/24 Javascript
由浅入深讲解Javascript继承机制与simple-inheritance源码分析
2015/12/13 Javascript
JavaScript中数组添加值和访问值常见问题
2016/02/06 Javascript
JS模拟简易滚动条效果代码(附demo源码)
2016/04/05 Javascript
辨析JavaScript中的Undefined类型与null类型
2016/05/26 Javascript
JS实现的二叉树算法完整实例
2017/04/06 Javascript
纯JS实现简单的日历
2017/06/26 Javascript
JS库之Waypoints的用法详解
2017/09/13 Javascript
jquery.picsign图片标注组件实例详解
2018/02/02 jQuery
微信小程序CSS3动画下拉菜单效果
2018/11/04 Javascript
微信小程序中使用echarts的实现方法
2019/04/24 Javascript
微信小程序按顺序同步执行的两种方式
2019/12/20 Javascript
[02:30]DOTA2放量测试专访海涛:呼吁保护新手玩家
2013/08/26 DOTA
[45:44]完美世界DOTA2联赛PWL S2 FTD vs PXG 第一场 11.27
2020/12/01 DOTA
python读写ini配置文件方法实例分析
2015/06/30 Python
python中numpy的矩阵、多维数组的用法
2018/02/05 Python
TensorFlow实现AutoEncoder自编码器
2018/03/09 Python
使用Python从零开始撸一个区块链
2018/03/14 Python
对python内置map和six.moves.map的区别详解
2018/12/19 Python
解决新版Pycharm中Matplotlib图像不在弹出独立的显示窗口问题
2019/01/15 Python
python字符串替换re.sub()方法解析
2019/09/18 Python
python实现统计代码行数的小工具
2019/09/19 Python
python列表返回重复数据的下标
2020/02/10 Python
慕尼黑山地运动、户外服装和体育用品专家:Sporthaus Schuster
2019/08/27 全球购物
劳动之星获奖感言
2014/02/01 职场文书
煤矿安全生产月活动总结
2014/07/05 职场文书
房屋授权委托书范本
2014/10/07 职场文书
2015年资料员工作总结
2015/04/25 职场文书
MySQL 服务和数据库管理
2021/11/11 MySQL