Maison > Article > développement back-end > Comment télécharger des webcomics avec Python : urllib et BeautifulSoup ?
La question à résoudre tourne autour du téléchargement de webcomics dans un dossier désigné à l'aide de Python et du module urllib. La tentative initiale a rencontré un problème où le fichier semblait être mis en cache plutôt que enregistré localement. De plus, la méthode permettant de déterminer l'existence de nouvelles bandes dessinées devait être abordée.
Récupération correcte des fichiers
Le code original utilisait urllib.URLopener() pour récupérer l'image . Cependant, la fonction la plus appropriée pour cette tâche est urllib.urlretrieve(). Cette fonction enregistre directement l'image à l'emplacement spécifié au lieu de simplement la mettre en cache.
Détermination du nombre de bandes dessinées
Pour identifier le nombre de bandes dessinées sur le site Web et télécharger uniquement les les plus récents, le script peut analyser le contenu HTML du site Web. Voici une technique utilisant la bibliothèque BeautifulSoup :
import bs4 url = "http://www.gunnerkrigg.com//comics/" html = requests.get(url).content soup = bs4.BeautifulSoup(html, features='lxml') comic_list = soup.find('select', {'id': 'comic-list'}) comic_count = len(comic_list.find_all('option'))
Script complet
Combinant le téléchargement d'images et la logique de comptage de bandes dessinées, le script suivant rationalise le processus de téléchargement de webcomic :
import urllib.request import bs4 def download_comics(url, path): """ Downloads webcomics from the given URL to the specified path. """ # Determine the comic count html = requests.get(url).content soup = bs4.BeautifulSoup(html, features='lxml') comic_list = soup.find('select', {'id': 'comic-list'}) comic_count = len(comic_list.find_all('option')) # Download the comics for i in range(1, comic_count + 1): comic_url = url + str(i) + '.jpg' comic_name = str(i) + '.jpg' urllib.request.urlretrieve(comic_url, os.path.join(path, comic_name)) url = "http://www.gunnerkrigg.com//comics/" path = "/file" download_comics(url, path)
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!