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基础教程之tcp socket编程详解及简单实例
Feb 23 Python
python脚本爬取字体文件的实现方法
Apr 29 Python
详解python使用递归、尾递归、循环三种方式实现斐波那契数列
Jan 16 Python
Python cookbook(数据结构与算法)保存最后N个元素的方法
Feb 13 Python
python使用ddt过程中遇到的问题及解决方案【推荐】
Oct 29 Python
对python:循环定义多个变量的实例详解
Jan 20 Python
django认证系统实现自定义权限管理的方法
Aug 28 Python
pytorch读取图像数据转成opencv格式实例
Jun 02 Python
Python 实现微信自动回复的方法
Sep 11 Python
python利用pytesseract 实现本地识别图片文字
Dec 14 Python
利用Python将list列表写入文件并读取的方法汇总
Mar 25 Python
LeetCode189轮转数组python示例
Aug 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模板引擎Smarty中变量的使用方法示例
2016/04/11 PHP
Prototype使用指南之enumerable.js
2007/01/10 Javascript
Javascript 阻止javascript事件冒泡,获取控件ID值
2009/06/27 Javascript
Javascript处理DOM元素事件实现代码
2012/05/23 Javascript
JS清除IE浏览器缓存的方法
2013/07/26 Javascript
javascript使用smipleChart实现简单图表
2015/01/02 Javascript
基于JavaScript将表单序列化类型的数据转化成对象的处理(允许对象中包含对象)
2015/12/28 Javascript
JavaScript常用函数工具集:lao-utils
2016/03/01 Javascript
使用JQuery 加载页面时调用JS的实现方法
2016/05/30 Javascript
JS实现显示带倒影的图片横排居中放大展示特效实例【测试可用】
2016/08/23 Javascript
JavaScript随机生成颜色的方法
2016/10/15 Javascript
jQuery代码优化方法总结
2018/01/29 jQuery
微信小程序模板消息限制实现无限制主动推送的示例代码
2019/08/27 Javascript
解决vue初始化项目时,一直卡在Project description上的问题
2019/10/31 Javascript
JavaScript Date对象功能与用法学习记录
2020/04/28 Javascript
JS实现躲避粒子小游戏
2020/06/18 Javascript
[04:29]DOTA2亚洲邀请赛小组赛第一日 TOP10精彩集锦
2015/02/01 DOTA
在Python中使用swapCase()方法转换大小写的教程
2015/05/20 Python
python实现的DES加密算法和3DES加密算法实例
2015/06/03 Python
python对日志进行处理的实例代码
2018/10/06 Python
Python 计算任意两向量之间的夹角方法
2019/07/05 Python
python 两个数据库postgresql对比
2019/10/21 Python
python 实现二维列表转置
2019/12/02 Python
python opencv实现图片缺陷检测(讲解直方图以及相关系数对比法)
2020/04/07 Python
class类在python中获取金融数据的实例方法
2020/12/10 Python
html5 touch事件实现页面上下滑动效果【附代码】
2016/03/10 HTML / CSS
CHARLES & KEITH澳大利亚官网:新加坡时尚品牌
2019/01/22 全球购物
数字漫画:comiXology
2020/06/13 全球购物
第一范式(1NF)、第二范式(2NF)和第三范式(3NF)之间的区别是什么?
2016/04/28 面试题
城市轨道交通工程职业规划书范文
2014/01/18 职场文书
《再别康桥》教学反思
2014/02/12 职场文书
税务会计岗位职责
2014/02/18 职场文书
数学教研活动总结
2014/07/02 职场文书
nginx实现发布静态资源的方法
2021/03/31 Servers
Mysql 如何合理地统计一个数据库里的所有表的数据量
2022/04/18 MySQL
单机多实例部署 MySQL8.0.20
2022/05/15 MySQL