无聊的时候玩玩人人农场,不知不觉等级就高了,于是乎就招偷了……作为一个玩农场的程序员,不能对此束手无策的!写个收菜的程序吧,顺便练练Python!
研究了一下人人网的wap页面,写下了如下的代码:
#! /usr/bin/env python
#coding=utf-8
import urllib2,urllib
from xml.dom import minidom
from HTMLParser import HTMLParser
LOGIN_URL='http://3g.renren.com/login.do?fx=0&autoLogin=true'
def login(user, passwd):
data=urllib.urlencode({
'origURL':'/home.do',
'email':user,
'password':passwd,
'login':'\xe7\x99\xbb\xe5\xbd\x95'
})
fd=urllib2.urlopen(LOGIN_URL,data)
return fd.read()
def getAppUrl(page):
doc=minidom.parseString(page)
appDiv=doc.getElementsByTagName('body')[0].getElementsByTagName('div')[3]
for a in appDiv.getElementsByTagName('a'):
url=a.getAttribute('href')
if url and 'apps.do' in url:
return url
else:
print '没有找到“应用”页面的链接'.decode('utf-8').encode('gbk')
def getFarmUrl(page):
doc=minidom.parseString(page)
farmDiv=doc.getElementsByTagName('body')[0].getElementsByTagName('div')[5]
for a in farmDiv.getElementsByTagName('a'):
url=a.getAttribute('href')
if url and 'appid=53429' in url:
return url
else:
print '没有找到“人人农场”页面的链接'.decode('utf-8').encode('gbk')
def visitUrl(url):
fd=urllib2.urlopen(url)
return fd.read()
def harvestFarm(user, passwd):
print '收获'.decode('utf-8').encode('gbk')+user+\
'的农场……'.decode('utf-8').encode('gbk')
appurl=getAppUrl(login(user, passwd))
farmurl=getFarmUrl(visitUrl(appurl))
tp=TargetsParser()
tp.feed(visitUrl(farmurl))
linkLists= tp.getTargets()
for url in linkLists:
hlp=HarvestLinkParser()
hlp.feed(visitUrl(url))
if hlp.getHarvestLink():
visitUrl(hlp.getHarvestLink())
print '收工离开此农场'.decode('utf-8').encode('gbk')
class TargetsParser(HTMLParser):
def __init__(self):
self.targets=[]
HTMLParser.__init__(self)
def handle_starttag(self, tag, attrs):
if tag!='a':
return
href=[value for key,value in attrs if key=='href']
for url in href:
if 'myCropAction.php' in url or 'myTreeAction.php' in url or\
'myAnimalAction.php' in url or 'myMachineAction.php' in url:
self.targets.append('http://mapp.renren.com'+url)
def getTargets(self):
return self.targets
class HarvestLinkParser(HTMLParser):
def __init__(self):
self.link=''
HTMLParser.__init__(self)
def handle_starttag(self, tag, attrs):
if tag!='a':
return
href=[value for key,value in attrs if key=='href']
for url in href:
if 'wap,reapAllAction.php' in url:
self.link='http://mapp.renren.com'+url
def getHarvestLink(self):
return self.link
if __name__=='__main__':
userList=[('email','password')]
for u,p in userList:
harvestFarm(u,p)
经过测试,已经可以实现收菜功能了。接下来的任务是:定时收菜、自动定时收菜、收菜时顺便偷菜……
嘿嘿,分享代码仅作为技术交流~
分享到:
相关推荐
大城市里的“种菜族”:是乐趣还是无奈.docx
1、有人曾说,做程序员的人,都是疯子,做长了往往入戏太深,成天与代码打交道,话都很少说,所以评论程序员们都是以后连妞都泡不到的人,我听后,我可以这样说,泡妞好比一个方法,他人是学习方法,而程序员呢,是...
ini文件是Initialization file的缩写,即初始化文件。相信很多同行人都对它不陌生,早期的图形操作系统,如Win3.x中,各种配置多是通过ini文件来存储和...无奈之下,小生只能直接写这些函数了,这么好的东西不敢独享。
唉,非得传就传个ICO吧!无奈! 唉,非得传就传个ICO吧!无奈!
“天价虾”后宰客新套路被曝光,游客伤心无奈.doc
小米主题80后的无奈破解版 放在手机里面直接导入进去就可以用了
生活的无奈.doc
人离开这个世界时-心里都有一份无奈与凄凉-5页.pdf
登录的图片验证码,相对比较简单,发出了大家一起学习参考。
无奈的个性签名参考.doc
很无奈的个性签名.doc
关于孤独无奈说说大全.doc
懒人专用~~ ...曾经能用,改了改又不好用了,今天下个啥啥资源没分个被逼无奈上传个小东西换点分。 注意:程序现在不好用,下下来要自己用vs05打开修改一下才能用,用C#些的,懒得修改程序的同学就别下了~~~
神舟数码客户端,无奈官方没有出linux下的客户端,自己写了个,测试环境是在吉首大学张家界校区,linux版本为,ubuntu 12.10,fedora 17,opensuse 12.1,亲测都可以正常链接,这个不能解决11点断网问题。 解压后在...
描写生活各种无奈的语录.doc
小学数学数学故事无奈的一枪
Jbuilder牵手Eclipse,无奈的选择
爱的无奈的相关文章推荐.doc
【木小禾素材】心情低落无奈句子
一个计算器,写的很郁闷,应该可以用面向对象来简单完成,无奈我实在很菜,一个一个按钮来加代码的.控件是xpmenu+一个myrightedit(我自己写的控件,实现从右面开始显示)[斑竹加:myrightedit可以用tedit代替]