依然声明:写的很烂
不打包了,直接放代码了
import urllib
import urllib2
import cookielib
import sys
from StringIO import StringIO
def login(s):
xn={}
xn['email']='asd'
xn['password']='213'
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=urllib2.urlopen(s)
return html.read()
# coding=utf-8
import urllib
import urllib2
import cookielib
import sys
from time import sleep
from login import *
html=login('http://3g.renren.com/myfriendlist.do')
html=html[html.find('全部'):]
last='123'
total=0
n=0
i=0
while html.find('下一页')>=0:
html=html[html.find('全部'):html.find('下一页')]
while html.find('profile.do?h')>=0:
html=html[html.find('<a href'):]
html=html[html.find('" '):]
html=html[html.find('<a href'):]
temp=html[html.find('"')+1:html.find('">')]
pro=login(temp)
sleep(2)
name=pro[pro.find('网')+6:pro.find('</title')]
pro=pro[pro.find('>分享<'):]
num=pro[pro.find('>(')+2:pro.find(')<')]
num=int(num)
n=n+1
print name,num
f=open('fenxiang.txt','a')
f.write(name+' '+str(num)+'n')
f.close()
total+=num
html=html[html.find('" '):]
i+=1
html=login('http://3g.renren.com/myfriendlist.do?curpage='+str(i))
f=open('fenxiang.txt','a')
f.write('total:'+str(total)+'nnum:'+str(n)+'naverage:'+str(total//n)+'n')
f.close()
# coding=utf-8
dic={}
f=open('fenxiang.txt','r')
for eachline in f:
dic[eachline[:eachline.find(' ')]]=int(eachline[eachline.find(' ')+1:eachline.find('n')])
f2=open('fenxiangsort.txt','w')
dic2= (sorted(dic.iteritems(), key=lambda d:d[1], reverse = True ))
for i in dic2:
f2.write(i[0]+' '+str(i[1])+'n')
说明:第一个login.py就是根据以前那个机器人的代码改的,只不过函数会返回参数的地址的HTML字符串
第二个就是主程序了,里面相应做修改可以查别的
第三个是排序用的,讲人名跟数量弄成字典按value排序,方法是网上搜的。不过有个问题是有人名字之间有空格(主要是英文名什么的),数量不多我手动去掉的……
import有几个是没用的
发表回复