依然声明:写的很烂
不打包了,直接放代码了
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有几个是没用的
发表回复