python登录豆瓣并发帖的方法
admin
2023-07-31 02:26:09
0

本文实例讲述了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(\'\"captcha\"\', html)
  if imgurl:
    url=imgurl.group(1)
    #将图片保存至同目录下
    res=urllib.urlretrieve(url, \'v.jpg\')
    #获取captcha-id参数
    captcha=re.search(\'\' ,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(\'\', html) 
        p[\"topic_id\"] = m.group(1)
        m= re.search(\'\', 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程序设计有所帮助。

相关内容

热门资讯

500 行 Python 代码... 语法分析器描述了一个句子的语法结构,用来帮助其他的应用进行推理。自然语言引入了很多意外的歧义,以我们...
定时清理删除C:\Progra... C:\Program Files (x86)下面很多scoped_dir开头的文件夹 写个批处理 定...
65536是2的几次方 计算2... 65536是2的16次方:65536=2⁶ 65536是256的2次方:65536=256 6553...
Mobi、epub格式电子书如... 在wps里全局设置里有一个文件关联,打开,勾选电子书文件选项就可以了。
scoped_dir32_70... 一台虚拟机C盘总是莫名奇妙的空间用完,导致很多软件没法再运行。经过仔细检查发现是C:\Program...
pycparser 是一个用... `pycparser` 是一个用 Python 编写的 C 语言解析器。它可以用来解析 C 代码并构...
小程序支付时提示:appid和... [Q]小程序支付时提示:appid和mch_id不匹配 [A]小程序和微信支付没有进行关联,访问“小...
Prometheus+Graf... 一,Prometheus概述 1,什么是Prometheus?Prometheus是最初在Sound...
微信小程序使用slider实现... 众所周知哈,微信小程序里面的音频播放是没有进度条的,但最近有个项目呢,客户要求音频要有进度条控制,所...
python绘图库Matplo... 本文简单介绍了Python绘图库Matplotlib的安装,简介如下: matplotlib是pyt...