веб-автоматизация - ссылка автоматической проверки

Я новичок в веб-приложении, и я хочу проверить, когда появится новая версия карты Dota, я проверю ссылки на getdota.com. Как я могу это сделать и какой язык, я хочу, чтобы он проверял каждый раз, когда вы запускаете Warcraft, и автоматически загружал новую карту в определенную папку. Мой вопрос: Можете ли вы дать ссылку на конкретную статью о веб-автоматизации или что-то в этом роде. Сначала спасибо :)


person Dzung Nguyen    schedule 12.10.2010    source источник
comment
голосование за закрытие, я не вижу вопроса   -  person Svisstack    schedule 12.10.2010


Ответы (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()
person Paweł Nadolski    schedule 13.10.2010
comment
спасибо, здорово иметь пример кода :) Хорошо учиться на чьем-то коде - person Dzung Nguyen; 13.10.2010