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读取图片EXIF信息类库介绍和使用实例
Jul 10 Python
一个月入门Python爬虫学习,轻松爬取大规模数据
Jan 03 Python
python 将数据保存为excel的xls格式(实例讲解)
May 03 Python
Python 循环终止语句的三种方法小结
Jun 24 Python
OpenCV 边缘检测
Jul 10 Python
Python csv文件的读写操作实例详解
Nov 19 Python
解决使用python print打印函数返回值多一个None的问题
Apr 09 Python
浅谈pymysql查询语句中带有in时传递参数的问题
Jun 05 Python
Python实现AES加密,解密的两种方法
Oct 03 Python
python代码实现图书管理系统
Nov 30 Python
python控制台打印log输出重复的解决方法
May 14 Python
Pandas搭配lambda组合使用详解
Jan 22 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防注入安全代码
2008/04/09 PHP
PHP 长文章分页函数 带使用方法,不会分割段落,翻页在底部
2009/10/22 PHP
PHP中in_array的隐式转换的解决方法
2018/03/06 PHP
Linux下安装Memcached服务器和客户端与PHP使用示例
2019/04/15 PHP
Web层改进II-用xmlhttp 无声息提交复杂表单
2007/01/22 Javascript
JQuery最佳实践之精妙的自定义事件
2010/08/11 Javascript
javascript实现的使用方向键控制光标在table单元格中切换
2010/11/17 Javascript
jquery的index方法实现tab效果
2011/02/16 Javascript
javascript实现按回车键切换焦点
2015/02/09 Javascript
深入探讨前端框架react
2015/12/09 Javascript
JS实现队列与堆栈的方法
2016/04/21 Javascript
javascript运算符——逻辑运算符全面解析
2016/06/27 Javascript
javascript数组常用方法汇总
2016/09/10 Javascript
js实现3d悬浮效果
2017/02/16 Javascript
jQuery树插件zTree使用方法详解
2017/05/02 jQuery
JS+HTML5实现图片在线预览功能
2017/07/22 Javascript
JS中常用的消息框总结
2018/02/24 Javascript
阿望教你用vue写扫雷小游戏
2020/01/20 Javascript
Vue scoped及deep使用方法解析
2020/08/01 Javascript
[01:19]DOTA2城市挑战赛报名开始 开启你的城市传奇
2018/03/23 DOTA
Python判断文件和文件夹是否存在的方法
2015/05/21 Python
Python中time模块和datetime模块的用法示例
2016/02/28 Python
解决python3 urllib中urlopen报错的问题
2017/03/25 Python
python爬虫 Pyppeteer使用方法解析
2019/09/28 Python
Mamaearth官方网站:印度母婴护理产品公司
2019/10/06 全球购物
JSP和Servlet有哪些相同点和不同点,他们之间的联系是什么?
2015/10/22 面试题
食品采购员岗位职责
2014/04/14 职场文书
讲解员培训方案
2014/05/04 职场文书
岗位标兵事迹材料
2014/05/17 职场文书
投标人法定代表人授权委托书格式
2014/09/28 职场文书
学习作风建设心得体会
2014/10/22 职场文书
开学典礼校长致辞
2015/07/29 职场文书
小学英语新课改心得体会
2016/01/22 职场文书
关于Vue Router的10条高级技巧总结
2021/05/06 Vue.js
JavaScript模拟实现网易云轮播效果
2022/04/04 Javascript
阿里云 Windows server 2019 配置FTP
2022/04/28 Servers