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中使用mysql数据库详细介绍
Mar 27 Python
Python实现求两个csv文件交集的方法
Sep 06 Python
Python基础语言学习笔记总结(精华)
Nov 14 Python
如何在sae中设置django,让sae的工作环境跟本地python环境一致
Nov 21 Python
对python使用http、https代理的实例讲解
May 07 Python
pandas中apply和transform方法的性能比较及区别介绍
Oct 30 Python
Python产生Gnuplot绘图数据的方法
Nov 09 Python
python实现浪漫的烟花秀
Jan 30 Python
基于keras输出中间层结果的2种实现方式
Jan 24 Python
Django Admin后台添加数据库视图过程解析
Apr 01 Python
Selenium及python实现滚动操作多种方法
Jul 21 Python
Python批量删除mysql中千万级大量数据的脚本分享
Dec 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数组添加元素方法小结
2014/12/20 PHP
php上传后台无法收到数据解决方法
2019/10/28 PHP
左侧是表头的JS表格控件(自写,网上没有的)
2013/06/04 Javascript
JS+CSS简单树形菜单实现方法
2015/09/12 Javascript
JavaScript用200行代码制作打飞机小游戏实例
2017/06/21 Javascript
jQuery替换节点元素的操作方法
2018/03/18 jQuery
vue组件实现可搜索下拉框扩展
2020/10/23 Javascript
vue 解决mintui弹窗弹起来,底部页面滚动bug问题
2020/11/12 Javascript
vue如何使用rem适配
2021/02/06 Vue.js
Python中使用scapy模拟数据包实现arp攻击、dns放大攻击例子
2014/10/23 Python
利用Python的Flask框架来构建一个简单的数字商品支付解决方案
2015/03/31 Python
使用Python实现将list中的每一项的首字母大写
2019/06/11 Python
在cmd中查看python的安装路径方法
2019/07/03 Python
详解使用python绘制混淆矩阵(confusion_matrix)
2019/07/14 Python
opencv python Canny边缘提取实现过程解析
2020/02/03 Python
Django使用Profile扩展User模块方式
2020/05/14 Python
python中关于数据类型的学习笔记
2020/07/19 Python
利用pipenv和pyenv管理多个相互独立的Python虚拟开发环境
2020/11/01 Python
英国假睫毛购买网站:FalseEyelashes.co.uk
2018/05/23 全球购物
乌克兰在线药房:Аптека24
2019/10/30 全球购物
Zalando Lounge瑞士:时尚与生活方式购物俱乐部
2020/03/12 全球购物
空字符串(“”)和null的区别
2012/11/13 面试题
架构师岗位职责
2013/11/18 职场文书
工厂仓管员岗位职责
2014/01/01 职场文书
医学类个人求职信范文
2014/02/05 职场文书
新年主持词
2014/03/27 职场文书
创先争优演讲稿
2014/09/15 职场文书
学校党的群众路线教育实践活动个人整改方案
2014/10/31 职场文书
2014年采购工作总结
2014/11/20 职场文书
民事和解协议书格式
2014/11/29 职场文书
2015年财务试用期工作总结
2014/12/24 职场文书
地道战观后感500字
2015/06/04 职场文书
学校团代会开幕词
2016/03/04 职场文书
JS监听Esc 键触发事键
2021/04/14 Javascript
Django一小时写出账号密码管理系统
2021/04/29 Python
win10系统计算机图标怎么调出来?win10调出计算机图标的方法
2022/08/14 数码科技