【转】一个学弟用python写的校内自动发状态的机器人,先转来,有空研究研究
原文地址:http://share.renren.com/share/GetShare.do?id=4175410964&owner=262195161&ref=minifeed&sfet=107&fin=1&ff_id=262195161
?
心血来潮写了个这么一个东西,就当是为py练练手了。最不习惯的地方就是冒号……
目前就是这样,核心代码其实就20多行,用于发状态
!!!不讲任何编码规范!!!不讲任何py习俗!!!不讲任何简单方法!!!不讲任何复杂测试!!!
-----------------poststatus.py-------------
?
# coding=utf-8
import urllib
import urllib2
import cookielib
import sys
xn={}
xn['email']='你懂的'
xn['password']='你也懂的'
cookie=cookielib.CookieJar()
opener=urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie))
urllib2.install_opener(opener)
zhanghao = urllib.urlencode(xn)
req=urllib2.Request('http://3g.renren.com/login.do?fx=0&autoLogin=true',zhanghao)
resp=urllib2.urlopen(req)
#print resp.read()
def zhuangtai(sss):
xn2={}
xn2['status']=sss
xn2['update']="发布"
zhuangtai=urllib.urlencode(xn2)
req2=urllib2.Request('http://3g.renren.com/status/wUpdateStatus.do',zhuangtai)
print sss
resp2=urllib2.urlopen(req2)
之所以用3g而不是www的原因前文已经讲了。
-------------renren.py----------------主程序--------------------
?
#!/usr/bin/python
# coding=utf-8
import poststatus
import time
import hourstatus
import thread
import getstatus
#poststatus.zhuangtai('test')
def hoursleep():
t=time.localtime()
#print t[4]
if t[4]==59:
h=t[3]
if h==23:
h=0
else:
h+=1
poststatus.zhuangtai('下面是机器人整点报时时间:'+hourstatus.s[t[3]])
time.sleep(60)
hoursleep()
def rtsleep():
getstatus.zhuanfa()
time.sleep(60)
rtsleep()
print '欢迎打开您的机器人,您可以随时输入命令。exit退出,post发任意状态'
thread.start_new_thread(hoursleep,())
thread.start_new_thread(rtsleep,())
print '自动报时模块已加载'
while 1==1:
stdin=raw_input('shell:')
if stdin=='exit':
exit()
if stdin=='post':
while stdin!='robot' and stdin!='man':
stdin=raw_input('谁在说话?(robot/man)')
if stdin=='robot':
stdin=raw_input('我想说什么?')
poststatus.zhuangtai(stdin)
else:
stdin=raw_input('您想说嘛?')
poststatus.zhuangtai('我主人说:'+stdin)
continue
直接运行就可以
-----------------------getstatus.py-----------------------------
?
# coding=utf-8
import urllib
import urllib2
import cookielib
import sys
import poststatus
import time
def zhuanfa():
xn={}
xn['email']='你懂的'
xn['password']='你也懂的'
cookie=cookielib.CookieJar()
opener=urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie))
urllib2.install_opener(opener)
zhanghao = urllib.urlencode(xn)
req=urllib2.Request('http://3g.renren.com/login.do?fx=0&autoLogin=true',zhanghao)
resp=urllib2.urlopen(req)
html=resp.read()
#print len(html)
index=html.find('转自')
while index>0:
html=html[index:]
index2=html.find('<p')
sss=html[:index2-1]
fw=open('zhuanfa.db','a')
fr=open('zhuanfa.db','r')
alllines=fr.readlines()
fr.close()
boo=1
for each in alllines:
if sss.find(each[len(each)/2:len(each)/3*2])>0:
boo=0
if boo>0:
poststatus.zhuangtai('自动转发:'+sss)
fw.write('\n'+sss+'\n')
else:
print '发现转发过的状态'
index=html.find('转自')
原理很简单,就是扫描一遍手机人人主页的第一页,只要是有“转自”就截取下来,跟存储的文件比对,如果没有转发过就转出去并存档。不存档的后果是显而易见的。
还有一个hourstatus.py,里面就是存了24个整点报时机器人要说的话,没别的
====================================
接下来的计划是写成真正的爬虫,能深入搜索什么的。可以建立一个好友的关系网什么的。那是以后的事情了。