0
我是新來web應用程序,我想檢查何時有新版本的dota地圖,我會檢查getdota.com中的鏈接。 我該怎麼做,以及哪種語言,我希望每次啓動魔獸時都會檢查它,並自動將新地圖下載到特定文件夾。 我的問題是:你可以給一個關於網絡自動化或類似的特定文章的鏈接。 謝謝第一次:)網絡自動化 - 自動檢查鏈接
我是新來web應用程序,我想檢查何時有新版本的dota地圖,我會檢查getdota.com中的鏈接。 我該怎麼做,以及哪種語言,我希望每次啓動魔獸時都會檢查它,並自動將新地圖下載到特定文件夾。 我的問題是:你可以給一個關於網絡自動化或類似的特定文章的鏈接。 謝謝第一次:)網絡自動化 - 自動檢查鏈接
下面是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()
謝謝你有一個很好的例子代碼:)很好學習somene的代碼 – nXqd 2010-10-13 13:58:13
投票結束,我沒有看到問題點 – Svisstack 2010-10-12 11:46:22