Bonjour,
Suite à la demande de Sakarov concernant un aspirateur d'images sur un site web, j'ai créé mon propre aspirateur qui fonctionne en ligne de commande et que sous Unix.
Systèmes:
Tout systèmes Unix, allez savoir pourquoi, urlretrieve du module urllib.request bug, donc obligation d'utiliser wget d'Unix. J'essaierais le bas niveau pour éviter wget, mais plus tard.
Les dépendances:
La librairie lxml
L'utilisation:
Attention il ne fait pas de récursion, je vais voir pour cela un peu plus tard.
Le code:
Le code n'est pas optimisé, il est fait rapidement, si des cas ne sont pas fonctionnels, n'hésitez pas à le faire partager pour faire progresser le programme.
En outre, des petites mises à jour d'optimisation seront faites lorsque le temps ne me manquera pas autant.
Bonne journée/soirée....
Suite à la demande de Sakarov concernant un aspirateur d'images sur un site web, j'ai créé mon propre aspirateur qui fonctionne en ligne de commande et que sous Unix.
Systèmes:
Tout systèmes Unix, allez savoir pourquoi, urlretrieve du module urllib.request bug, donc obligation d'utiliser wget d'Unix. J'essaierais le bas niveau pour éviter wget, mais plus tard.
Les dépendances:
La librairie lxml
L'utilisation:
Code:
python3 wgetim.py http://www.google.fr /home/user/Down
Le code:
Code:
import urllib.request import urllib.parse import platform import os import sys try: import lxml.html as lh except ImportError: if platform.mac_ver(): down_url = "http://lxml.de/files/lxml-3.2.2.tgz" elif platform.linux_distribution(): down_url = "download via synaptic lxml" else: sys.exit('program for Unix system') sys.exit('library lxml missing, {}'.format(down_url)) def search(url): url_base = urllib.parse.urlparse(url).netloc data = urllib.request.urlopen(url) if data.code != 200: sys.exit('Error URL for {}'.format(url)) doc = lh.fromstring(data.read()) result = doc.xpath('//img/@src') list_urls = [url_base+address for address in result] return list_urls def main(): URL = sys.argv[1] DIRECTORY = sys.argv[2] if os.path.isdir(DIRECTORY): os.chdir(DIRECTORY) liste = search(URL) for url in liste: print('Download of {}'.format(url)) try: os.system('wget {}'.format(url)) except: print('Error Download for {}'.format(url)) else: try: os.mkdir(DIRECTORY) os.chdir(DIRECTORY) main() except OSError: sys.exit('Error, bad parameter for directory') main()
En outre, des petites mises à jour d'optimisation seront faites lorsque le temps ne me manquera pas autant.
Bonne journée/soirée....
Commentaire