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 socket 超时设置 errno 10054
Jul 01 Python
Python中的两个内置模块介绍
Apr 05 Python
python实现批量下载新浪博客的方法
Jun 15 Python
浅谈python for循环的巧妙运用(迭代、列表生成式)
Sep 26 Python
python求最大连续子数组的和
Jul 07 Python
python版本单链表实现代码
Sep 28 Python
用pycharm开发django项目示例代码
Oct 24 Python
opencv 获取rtsp流媒体视频的实现方法
Aug 23 Python
python3反转字符串的3种方法(小结)
Nov 07 Python
在django-xadmin中APScheduler的启动初始化实例
Nov 15 Python
Django restframework 框架认证、权限、限流用法示例
Dec 21 Python
解决Pymongo insert时会自动添加_id的问题
Dec 05 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/05/09 PHP
PHP实现支持SSL连接的SMTP邮件发送类
2015/03/05 PHP
PHP+JQUERY操作JSON实例
2017/03/23 PHP
jQuery.ajax 用户登录验证代码
2010/10/29 Javascript
一样的table?不一样的table(可编辑状态table)
2012/09/19 Javascript
js实现适用于素材网站的黑色多级菜单导航条效果
2015/08/24 Javascript
基于jQuery实现网页打印功能
2015/12/01 Javascript
卸载安装Node.js与npm过程详解
2016/08/15 Javascript
利用Angularjs和原生JS分别实现动态效果的输入框
2016/09/01 Javascript
学习 NodeJS 第八天:Socket 通讯实例
2016/12/21 NodeJs
获取当前月(季度/年)的最后一天(set相关操作及应用)
2016/12/27 Javascript
NodeJS实现自定义流的方法
2018/08/01 NodeJs
浅析Vue.js中v-bind v-model的使用和区别
2018/12/04 Javascript
如何获取vue单文件自身源码路径
2019/05/06 Javascript
微信小程序环境下将文件上传到OSS的方法步骤
2019/05/31 Javascript
[01:34]传奇从这开始 2016国际邀请赛中国区预选赛震撼开启
2016/06/26 DOTA
[04:15]DOTA2-DPC中国联赛 正赛 Ehome vs Aster 选手采访
2021/03/11 DOTA
Python读取环境变量的方法和自定义类分享
2014/11/22 Python
浅谈编码,解码,乱码的问题
2016/12/30 Python
浅谈Python采集网页时正则表达式匹配换行符的问题
2018/12/20 Python
python3实现表白神器
2019/04/09 Python
Python hashlib加密模块常用方法解析
2019/12/18 Python
Matplotlib scatter绘制散点图的方法实现
2020/01/02 Python
python 读取二进制 显示图片案例
2020/04/24 Python
python3.6.8 + pycharm + PyQt5 环境搭建的图文教程
2020/06/11 Python
python3实现飞机大战
2020/11/29 Python
详解python日志输出使用配置文件格式
2021/02/10 Python
html5页面结构_动力节点Java学院整理
2017/07/10 HTML / CSS
Canvas与图片压缩的示例代码
2017/11/28 HTML / CSS
小学毕业感言150字
2014/02/05 职场文书
农村婚庆司仪主持词
2014/03/15 职场文书
餐饮采购员岗位职责
2014/03/15 职场文书
劳动竞赛口号
2014/06/16 职场文书
党员教师个人对照检查材料(群众路线)
2014/09/26 职场文书
领导参观欢迎词
2015/01/26 职场文书
python实现学生信息管理系统(面向对象)
2022/06/05 Python