# Ultima-Strasbourg list-dumper 1.0 # # Ce script Python récupère automatiquement la liste de tous les titres disponibles # chez Ultima Strasbourg. (exemple: # http://www.ultima-strasbourg.com/cgi-bin/Argus.cgi?value=&cat=PS2&start=0&step=10&submitButtonName=CHERCHER&svalue=a ) # # Syntaxe : python ultima_s.py > today.csv # # Ce script effectue automatiquement les requêtes HTTP, parse les pages HTML, construit une liste # et sort le tout au format CSV # Colonnes : catégorie, titre, prix d'achat (euro), prix de vente (euro), disponibe # # Script écrit par Sébastien SAUVAGE - http://sebsauvage.net # # Domaine public # # Entrez l'adresse de votre proxy ci-dessous: proxy_address = 'http://123.45.67.89:3198' import os,urllib,sys,re os.environ['http_proxy'] = proxy_address base_url = 'http://www.ultima-strasbourg.com/cgi-bin/Argus.cgi?value=&start=0&step=1000&submitButtonName=CHERCHER' categories = { 'PSX' : 'Playstation', 'PS2' : 'Playstation 2', 'DR' : 'Dreamcast', 'CUBE' : 'GameCube', 'GB' : 'Gameboy', 'GBA' : 'Gameboy Advanced', 'DVD' : 'DVD', 'XBOX' : 'XBOX', 'MAC' : 'Macintosh', 'PC' : 'PC' } letters = [chr(ord('a')+i) for i in range(0,26)] # = ['a','b','c','d',...] csv_file = ['"Categorie","Titre","Prix d\'achat","Prix de vente","Disponible"'] regexp = re.compile('\s*.*?\s*(.*?)\s*(.*?)\s*(.*?)\s*(.*?)\s*', re.IGNORECASE | re.DOTALL) for (catcode,catlabel) in categories.items(): for letter in letters: sys.stderr.write('Fetching '+catlabel+' page '+letter+'... ') page = urllib.urlopen(base_url+'&cat='+catcode+'&svalue='+letter).read() sys.stderr.write('done ('+str(len(page))+' bytes)\n') page = re.sub(' ',' ',page) matchs = regexp.findall( page ) if matchs : for match in matchs: csv_file.append('"'+catlabel+'","'+match[0].strip()+'","'+match[1].strip()+'","'+match[2].strip()+'","'+match[3].strip()+'"') for line in csv_file: print line sys.stderr.write('All done.')