python登录豆瓣并发帖的方法

作者:小刚1 时间:2021-03-06 14:48:35 

本文实例讲述了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,登录,豆瓣
0
投稿

猜你喜欢

  • pandas-resample按时间聚合实例

    2023-05-26 19:07:50
  • Opencv实现二维直方图的计算及绘制

    2023-07-18 23:34:52
  • Lost connection to MySQL server at 'reading authorization packet', system error: 0

    2024-01-20 19:06:26
  • ASP中使用Set ors=oConn.Execute()时获取记录数的方法

    2011-02-20 10:48:00
  • golang中字符串MD5生成方式总结

    2024-04-23 09:41:05
  • swiper在vue项目中loop循环轮播失效的解决方法

    2024-05-03 15:10:24
  • 正确理解python迭代器与生成器

    2022-09-14 22:55:57
  • python从入门到精通(DAY 1)

    2022-08-12 17:26:56
  • Bootstrap响应式表格详解

    2023-07-02 05:23:58
  • PHP PDOStatement::closeCursor讲解

    2023-06-07 18:23:31
  • Vue路由应用详细讲解

    2024-05-05 09:24:03
  • js鼠标按键事件和键盘按键事件用法实例汇总

    2024-04-17 10:04:29
  • Vue双向绑定原理及实现方法

    2024-05-10 14:16:55
  • Python新版极验验证码识别验证码教程详解

    2022-03-07 01:02:55
  • 完全讲解 使用MSCS建立SQL Server集群

    2009-01-19 14:10:00
  • ubuntu定时执行python脚本实例代码

    2022-11-30 17:35:03
  • js实现股票实时刷新数据案例

    2024-04-10 10:52:20
  • pandas将多个dataframe以多个sheet的形式保存到一个excel文件中

    2022-11-06 02:24:01
  • Python中的异常处理try/except/finally/raise用法分析

    2023-12-11 21:37:41
  • sqlserver中根据字符分割字符串的最好的写法分享

    2012-06-06 19:44:40
  • asp之家 网络编程 m.aspxhome.com