当前访客身份:游客 [ 登录 | 加入开源中国 ]

代码分享

当前位置:
代码分享 » Python  » 网络编程
分享到: 
收藏 +0
2
把Email和password改成你的人人账号
标签: <无>

代码片段(1) [全屏查看所有代码]

1. [文件] renren.py ~ 3KB     下载(160)     跳至 [1] [全屏预览]

#-*- coding:UTF-8 -*-
'''
======================================
此程序根据 http://www.oschina.net/code/snippet_148170_10661 内容改编
Adapted BY: bepcao
Mail:peterc9511@gmail.com
======================================
'''
from sgmllib import SGMLParser
import sys,urllib2,urllib,cookielib
import datetime
import time
class spider(SGMLParser):
    def __init__(self,email,password):
        SGMLParser.__init__(self)
        self.h3=False
        self.h3_is_ready=False
        self.div=False
        self.h3_and_div=False
        self.a=False
        self.depth=0
        self.names=""
        self.dic={}   
         
        self.email=email
        self.password=password
        self.domain='renren.com'
        try:
            cookie=cookielib.CookieJar()
            cookieProc=urllib2.HTTPCookieProcessor(cookie)
        except:
            raise
        else:
            opener=urllib2.build_opener(cookieProc)
            urllib2.install_opener(opener)       

    def login(self):
        print '开始登录'
        url='http://www.renren.com/PLogin.do'
        postdata={
                  'email':self.email,
                  'password':self.password,
                  'domain':self.domain  
                  }
        req=urllib2.Request(
                            url,
                            urllib.urlencode(postdata)            
                            )
        
        self.file=urllib2.urlopen(req).read()
        idPos = self.file.index("'id':'")
        self.id=self.file[idPos+6:idPos+15]
        tokPos=self.file.index("get_check:'")
        self.tok=self.file[tokPos+11:tokPos+21]
        rtkPos=self.file.index("get_check_x:'")
        self.rtk=self.file[rtkPos+13:rtkPos+21]
    


    def publish(self,content):
        url1='http://shell.renren.com/'+self.id+'/status'
        postdata={
                  'content':content,
                  'hostid':self.id,
                  'requestToken':self.tok,
                  '_rtk':self.rtk,
                  'channel':'renren',
                  }
        req1=urllib2.Request(
                            url1,
                            urllib.urlencode(postdata)            
                            )
        self.file1=urllib2.urlopen(req1).read()
        print '%s:\n刚才使用你的人人账号 %s 发了一条状态\n内容为:(%s)'% (datetime.datetime.now(),self.email,postdata.get('content',''))



renrenspider=spider('Email','Password')
renrenspider.login()
content=raw_input('请输入状态的内容:')
renrenspider.publish(content)



开源中国-程序员在线工具:Git代码托管 API文档大全(120+) JS在线编辑演示 二维码 更多»

发表评论 回到顶部 网友评论(13)

  • 1楼:isaced 发表于 2013-01-31 22:12 回复此评论
    学习下!
  • 2楼:Solr_ 发表于 2013-01-31 23:25 回复此评论
    请教一下,这样不会需要验证码吗?
  • 3楼:卜库塔 发表于 2013-01-31 23:56 回复此评论
    验证码的问题同样是我关注的~求解答
  • 4楼:Bown 发表于 2013-02-01 09:23 回复此评论
    我也做过这类的,登陆发状态刷来访什么的。  _rtk和accessToken用正则取多好。。
    楼上说的验证码问题,好像是没有连续几次登陆出错就不会出验证码?
  • 5楼:andying 发表于 2013-02-01 09:59 回复此评论
    测试了一下,不支持中文内容提交.
  • 6楼:andying 发表于 2013-02-01 11:14 回复此评论
    哈哈,中文问题终于搞定,把这一句renrenspider.publish(content)
    改成:renrenspider.publish(content.decode('gb2312').encode('utf-8'))
    就支持中文发布。
  • 7楼:孤独的鱼 发表于 2013-02-07 19:31 回复此评论

    引用来自“andylauxin”的评论

    哈哈,中文问题终于搞定,把这一句renrenspider.publish(content)
    改成:renrenspider.publish(content.decode('gb2312').encode('utf-8'))
    就支持中文发布。
    恩,这是正解,因为你的文件编码默认是utf-8的,中文是gb2312,你要先decode成unicode,然后在encode成utf-8
  • 8楼:yyliu 发表于 2013-02-13 11:56 回复此评论

    引用来自“CodeMage”的评论

    我也做过这类的,登陆发状态刷来访什么的。  _rtk和accessToken用正则取多好。。
    楼上说的验证码问题,好像是没有连续几次登陆出错就不会出验证码?
    一般一天登录个十来次验证码就出来了= =
  • 9楼:zhangdedezhu 发表于 2013-02-19 11:45 回复此评论
    idPos = self.file.index("'id':'")

    self.id=self.file[idPos+6:idPos+15]

    我返回的结果为什么没有这一项啊?求解
  • 10楼:zhangdedezhu 发表于 2013-02-19 11:49 回复此评论
    现在怎么不行了,发不了。
  • 11楼:zhangdedezhu 发表于 2013-02-19 16:18 回复此评论
    楼主我感觉
    self.id=self.file[idPos+6:idPos+15]
            tokPos=self.file.index("get_check:'")
            self.tok=self.file[tokPos+11:tokPos+21]
            rtkPos=self.file.index("get_check_x:'")
            self.rtk=self.file[rtkPos+13:rtkPos+21]


    这里用正则比较好  
     IdRe="hostid=(\d+)"
        ToRe="requesttoken=(.\d+)"
        Rtk="get_check_x:'(\w+)'"
  • 12楼:John__wang 发表于 2014-07-21 22:01 回复此评论
    目前依然可用, 而且在UBUNTU下运行时中文也可以用。估计别人说的中文不能正常运行是因为自己的文件编码的原因吧
  • 13楼:曹毅yy 发表于 2017-06-30 16:07 回复此评论
    dfsa
开源从代码分享开始 分享代码
peterc9511的其它代码 全部(1)...