2010-10-12 61 views
0

我是新來web應用程序,我想檢查何時有新版本的dota地圖,我會檢查getdota.com中的鏈接。 我該怎麼做,以及哪種語言,我希望每次啓動魔獸時都會檢查它,並自動將新地圖下載到特定文件夾。 我的問題是:你可以給一個關於網絡自動化或類似的特定文章的鏈接。 謝謝第一次:)網絡自動化 - 自動檢查鏈接

+0

投票結束,我沒有看到問題點 – Svisstack 2010-10-12 11:46:22

回答

1

下面是Python的一個例子。

它解析getdota.com頁面,讀取POST請求下載地圖的參數,獲取文件並將其保存在配置目錄(默認爲當前目錄)。

#!/usr/bin/env python 
import urllib 
import urllib2 
import sgmllib 
from pprint import pprint 
import os.path 
import sys 

url = 'http://www.getdota.com/' 
download_url = 'http://www.getdota.com/app/getmap/' 
chunk = 10000 
directory = '' #directory where file should be saved, if empty uses current dir 

class DotaParser(sgmllib.SGMLParser): 
    def parse(self, s): 
     self.feed(s) 
     self.close() 
    def __init__(self, verbose=0): 
     sgmllib.SGMLParser.__init__(self, verbose) 
     self.URL = '' 
     self.post_args = {} 
    def getArgs(self): 
     return self.post_args 
    def start_input(self, attributes): 
     d = dict(attributes) 
     if d.get('id', None) == None: 
      return 
     if d['id'] in ["input_mirror2", "input_file_name2", "input_map_id2", "input_language2", "input_language_id2"]: 
      self.post_args[d['name']] = d['value'] 

if __name__ == '__main__': 
    dotap = DotaParser() 
    data = urllib2.urlopen(urllib2.Request('http://www.getdota.com/')).read() 
    dotap.parse(data) 
    data = urllib.urlencode(dotap.getArgs()) 
    request = urllib2.Request(download_url, data) 
    response = urllib2.urlopen(request) 
    page = response.read() 

    #download file 
    fname = directory + page.split('/')[-1] 
    if os.path.isfile(fname): 
     print "No newer file available" 
     sys.exit(0) 
    f = open(fname, 'w') 
    print "New file available. Saving in: %s" % fname 
    webFile = urllib.urlopen(page) 
    c = webFile.read(chunk) 
    while(c): 
     f.write(c) 
     c = webFile.read(chunk) 
    f.close() 
    webFile.close() 
+0

謝謝你有一個很好的例子代碼:)很好學習somene的代碼 – nXqd 2010-10-13 13:58:13