python登录豆瓣并发帖的方法

 更新时间:2015年07月08日 11:39:40   作者:小刚1  
这篇文章主要介绍了python登录豆瓣并发帖的方法,涉及URL模拟登陆及cookie的相关使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下

本文实例讲述了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利用pyodbc库将文件信息插入Access数据库

    Python利用pyodbc库将文件信息插入Access数据库

    在日常编程工作中,我们经常需要处理文件和文件夹,所以本文将介绍如何使用Python编程语言和wxPython库创建一个简单的文件浏览器界面,使用户能够选择文件夹并将文件信息插入到Access数据库中,需要的可以参考下
    2023-08-08
  • jupyter notebook远程访问不了的问题解决方法

    jupyter notebook远程访问不了的问题解决方法

    这篇文章主要介绍了jupyter notebook远程访问不了的问题解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • 简单的连接MySQL与Python的Bottle框架的方法

    简单的连接MySQL与Python的Bottle框架的方法

    这篇文章主要介绍了简单的连接MySQL与Python的Bottle框架的方法,主要基于mysql-connector插件,需要的朋友可以参考下
    2015-04-04
  • 基于django ManyToMany 使用的注意事项详解

    基于django ManyToMany 使用的注意事项详解

    今天小编就为大家分享一篇基于django ManyToMany 使用的注意事项详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-08-08
  • Python爬取网站图片并保存的实现示例

    Python爬取网站图片并保存的实现示例

    这篇文章主要介绍了Python爬取网站图片并保存的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-02-02
  • Python+Pillow进行图形处理的示例详解

    Python+Pillow进行图形处理的示例详解

    PIL:Python Imaging Library,已经是Python平台事实上的图像处理标准库了。PIL功能非常强大,但API却非常简单易用。本文就将利用Pillow进行简单的图形处理,需要的可以参考一下
    2022-10-10
  • 对Python中class和instance以及self的用法详解

    对Python中class和instance以及self的用法详解

    今天小编就为大家分享一篇对Python中class和instance以及self的用法详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-06-06
  • 用代码帮你了解Python基础(3)

    用代码帮你了解Python基础(3)

    这篇文章主要用代码帮你了解Python基础,使用循环,字典和集合的示例代码,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • django channels使用和配置及实现群聊

    django channels使用和配置及实现群聊

    本文主要介绍了django channels使用和配置及实现群聊,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-05-05
  • python单线程下实现多个socket并发过程详解

    python单线程下实现多个socket并发过程详解

    这篇文章主要介绍了python单线程下实现多个socket并发过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-07-07

最新评论