盗まれてしまったので,おかずの外挂けを书くわけにはいかない.


退屈な时に人间の农场を游んで、知らず知らずのうちにレベルが高くなって、そこで盗みを招きました......农场を游ぶプログラマーとして、これに対して手の施しようがありません!料理を受け取るプログラムを書きましょう.ついでに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)

テストを経て、すでに料理を受け取る機能を実現することができます.次の任務は、定時に料理を受け取り、自動的に定時に料理を受け取り、料理を受け取るついでに料理を盗むことです.
 
へへへ、コードを共有するのは技術交流だけです~