Maison  >  Article  >  développement back-end  >  Comment télécharger des webcomics avec Python : urllib et BeautifulSoup ?

Comment télécharger des webcomics avec Python : urllib et BeautifulSoup ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-07 22:42:02147parcourir

How to Download Webcomics with Python: urllib and BeautifulSoup?

Diagnostic du problème de téléchargement d'images Python avec urllib

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn