17.12.2012 Views

Programmation PYTHON - Zenk - Security - Repository

Programmation PYTHON - Zenk - Security - Repository

Programmation PYTHON - Zenk - Security - Repository

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

378<br />

La bibliothèque standard<br />

TROISIÈME PARTIE<br />

Discussion<br />

return valeur<br />

def download(self, filename=None):<br />

"""Récupère la page web et les pièces dépendantes"""<br />

self._count = 0<br />

self._media = {}<br />

scheme, netloc, path, query, fragment = urlsplit(self.url)<br />

self.urlbase = '%s://%s' % (scheme, netloc)<br />

logging.info('Récupération de %s' % self.url)<br />

try:<br />

content = self._get_content(self.url)<br />

except urllib2.URLError:<br />

logging.info("Impossible de lire l'url %s" % self.url)<br />

raise<br />

# création d'un sous-dossier<br />

if not os.path.exists('_files'):<br />

os.mkdir('_files')<br />

# parcours de la page pour remplacer et télécharger<br />

# les images<br />

parser = PageParser(self._media_needed)<br />

content = parser.parse(content)<br />

# sauvegarde de la page<br />

if filename is None:<br />

filename = path.split('/')[-1]<br />

if filename == '':<br />

filename = '%s.htlm' % netloc<br />

with open(filename, 'w') as f:<br />

f.write(content)<br />

logging.info('Fichier "%s" créé' % os.path.basename(filename))<br />

if __name__ == '__main__':<br />

if len(sys.argv) != 2:<br />

print('Utilisation: %s ' % sys.argv[0])<br />

sys.exit(0)<br />

url = sys.argv[1]<br />

my_page = WebPage(url)<br />

my_page.download()<br />

La classe PageParser dérive de sgmlib.SGMLParser qui est un simple parseur<br />

SGML, compatible avec tout texte contenant des balises. Ce parseur a été choisi<br />

pour ne pas souffrir des restrictions des parseurs HTML classiques comme

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!