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脚本在Nginx和uwsgi上部署MoinMoin的教程
May 05 Python
Python编程实现粒子群算法(PSO)详解
Nov 13 Python
python字典快速保存于读取的方法
Mar 23 Python
pandas创建新Dataframe并添加多行的实例
Apr 08 Python
对python3 一组数值的归一化处理方法详解
Jul 11 Python
解决PyCharm import torch包失败的问题
Oct 13 Python
python实现图片识别汽车功能
Nov 30 Python
在python plt图表中文字大小调节的方法
Jul 08 Python
对pytorch中的梯度更新方法详解
Aug 20 Python
python 给图像添加透明度(alpha通道)
Apr 09 Python
解决Jupyter notebook更换主题工具栏被隐藏及添加目录生成插件问题
Apr 20 Python
Pycharm创建python文件自动添加日期作者等信息(步骤详解)
Feb 03 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对gzip文件或者字符串解压实例参考
2008/07/25 PHP
php设计模式小结
2013/02/15 PHP
如何让搜索引擎抓取AJAX内容解决方案
2014/08/25 PHP
PHP dirname功能及原理实例解析
2020/10/28 PHP
不能再简单的无闪刷新验证码原理很简单
2007/11/05 Javascript
JS获取地址栏参数的小例子
2013/08/23 Javascript
浅析JavaScript原型继承的陷阱
2013/12/03 Javascript
jquery的ajax异步请求接收返回json数据实例
2014/06/16 Javascript
Angular17之Angular自定义指令详解
2018/01/21 Javascript
vue实现搜索过滤效果
2019/05/28 Javascript
vue-week-picker实现支持按周切换的日历
2019/06/26 Javascript
VueX模块的具体使用(小白教程)
2020/06/05 Javascript
[04:11]DOTA2上海特级锦标赛主赛事首日TOP10
2016/03/03 DOTA
Python跳出循环语句continue与break的区别
2014/08/25 Python
Python实现抓取百度搜索结果页的网站标题信息
2015/01/22 Python
Python基于win32ui模块创建弹出式菜单示例
2018/05/09 Python
Python 读取某个目录下所有的文件实例
2018/06/23 Python
Python画柱状统计图操作示例【基于matplotlib库】
2018/07/04 Python
利用python GDAL库读写geotiff格式的遥感影像方法
2018/11/29 Python
Python3实现发送邮件和发送短信验证码功能
2020/01/07 Python
Python参数传递实现过程及原理详解
2020/05/14 Python
keras中的History对象用法
2020/06/19 Python
浅谈Python中的生成器和迭代器
2020/06/19 Python
HTML5的hidden属性兼容老浏览器的方法
2014/04/23 HTML / CSS
美国牙科折扣计划:DentalPlans.com
2019/08/26 全球购物
几个判断型的面试题
2012/07/03 面试题
保险专业大专生求职信
2013/10/26 职场文书
毕业论文评语大全
2014/04/29 职场文书
乡镇消防安全责任书
2014/07/23 职场文书
校园广播稿精选
2014/10/01 职场文书
交通事故赔偿协议书怎么写
2014/10/04 职场文书
立春观后感
2015/06/18 职场文书
小学秋季运动会通讯稿
2015/11/25 职场文书
2016大学生优秀志愿者事迹材料
2016/02/25 职场文书
Python Django项目和应用的创建详解
2021/11/27 Python
HttpClient实现表单提交上传文件
2022/08/14 Java/Android