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实现井字棋游戏
Mar 30 Python
python通过pip更新所有已安装的包实现方法
May 19 Python
Python实现的文本编辑器功能示例
Jun 30 Python
解决Python pandas df 写入excel 出现的问题
Jul 04 Python
如何利用Python开发一个简单的猜数字游戏
Sep 22 Python
python pygame实现滚动横版射击游戏城市之战
Nov 25 Python
Python for循环与getitem的关系详解
Jan 02 Python
Python3读写Excel文件(使用xlrd,xlsxwriter,openpyxl3种方式读写实例与优劣)
Feb 13 Python
Python使用urlretrieve实现直接远程下载图片的示例代码
Aug 17 Python
安装pyecharts1.8.0版本后导入pyecharts模块绘图时报错: “所有图表类型将在 v1.9.0 版本开始强制使用 ChartItem 进行数据项配置 ”的解决方法
Aug 18 Python
判断Python中的Nonetype类型
May 25 Python
Python实现滑雪小游戏
Sep 25 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与MySQL开发的8个技巧小结
2010/12/17 PHP
php实现用户在线时间统计详解
2011/10/08 PHP
PHP register_shutdown_function函数的深入解析
2013/06/03 PHP
php将数组转换成csv格式文件输出的方法
2015/03/14 PHP
jQuery中Dom的基本操作小结
2014/01/23 Javascript
详解JavaScript数组的操作大全
2015/10/19 Javascript
jQuery事件绑定方法学习总结(推荐)
2016/11/21 Javascript
带你快速理解javascript中的事件模型
2017/08/14 Javascript
vue动态绑定class的几种常用方式小结
2019/05/21 Javascript
微信小程序开发数据缓存基础知识辨析及运用实例详解
2020/11/06 Javascript
python使用PyGame模块播放声音的方法
2015/05/20 Python
Python线程详解
2015/06/24 Python
Python编程之序列操作实例详解
2017/07/22 Python
python实现简单登陆系统
2018/10/18 Python
Python虚拟环境的原理及使用详解
2019/07/02 Python
Django实现发送邮件找回密码功能
2019/08/12 Python
python使用pygame实现笑脸乒乓球弹珠球游戏
2019/11/25 Python
Django通用类视图实现忘记密码重置密码功能示例
2019/12/17 Python
解决python gdal投影坐标系转换的问题
2020/01/17 Python
pytorch实现seq2seq时对loss进行mask的方式
2020/02/18 Python
Python图像处理库PIL的ImageFont模块使用介绍
2020/02/26 Python
使用keras和tensorflow保存为可部署的pb格式
2020/05/25 Python
opencv 图像礼帽和图像黑帽的实现
2020/07/07 Python
python爬虫请求头设置代码
2020/07/28 Python
css3实现元素环绕中心点布局的方法示例
2019/01/15 HTML / CSS
描述内存分配方式以及它们的区别
2016/10/15 面试题
餐饮业会计岗位职责
2013/12/19 职场文书
八年级英语教学反思
2014/01/09 职场文书
幼儿园庆六一活动方案
2014/03/06 职场文书
生物科学专业毕业生求职信
2014/06/02 职场文书
股指期货心得体会
2014/09/13 职场文书
2014国庆节国旗下演讲稿(精选版)
2014/09/26 职场文书
开会迟到检讨书范文
2015/05/06 职场文书
2015年学校总务处工作总结
2015/05/19 职场文书
毕业生入职感言
2015/07/31 职场文书
python实现网络五子棋
2021/04/11 Python