代码如下:
#_*_coding:utf_8_
from sgmllib import sgmlparserimport sys, urllib2, urllib, cookielibimport datetime, time
class spider(sgmlparser): def __init__(self, email, password): sgmlparser.__init__(self) self.email = email self.password = password self.domain = ‘renren.com’ try: cookie = cookielib.cookiejar() # a class to handle http cookies 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’ #url = ‘http://www.renren.com/syshome.do’ postdata = { ’email’: self.email, ‘password’: self.password, ‘domain’: self.domain } # 一般情况下引入urllib2的地方都需要引入urllib,因为需要urlencode() req = urllib2.request( url, urllib.urlencode(postdata) ) self.file = urllib2.urlopen(req).read() # urlopen后 成功后进入首页 因此self.file的内容就是首页的html文件的内容 # print self.file 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’ print ‘self.id = ‘ , self.id 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 datetime.datetime.now() print ‘刚才账号 %s发了一条状态’ % self.email print ‘内容为: %s’ % postdata.get(‘content’, ”)
renrenspider = spider(‘qich555550@163.com’, ‘qishibo123’)renrenspider.login()#content = raw_input(‘请输入状态的内容:’)contents =[“祝”,”各”,”位”,”同”,”学”,”盆”,”友”,”在”,”新”,”的”,”一”,”年”,”里”,”身”,”体”,”健”,”康”,”万”,”事”,”如”,”意”,”不小心刷屏了,望大家谅解”]#renrenspider.publish(content)#content = “新年快乐”#renrenspider.publish(content)#renrenspider.publish(content.decode(‘gb2312’).encode(‘utf-8’))
for content in contents: renrenspider.publish(content)
用这个程序就可以发状态刷屏了,只不过校内的状态不支持具体时间,看不出效果来,不然每隔两秒一条状态应该会让人惊讶的