复制代码 代码如下:
#_*_coding:utf_8_
from sgmllib import SGMLParser
import sys, urllib2, urllib, cookielib
import 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)
用这个程序就可以发状态刷屏了,只不过校内的状态不支持具体时间,看不出效果来,不然每隔两秒一条状态应该会让人惊讶的