Heim > Backend-Entwicklung > Python-Tutorial > Wie lade ich Webcomics mit Python herunter: urllib und BeautifulSoup?

Wie lade ich Webcomics mit Python herunter: urllib und BeautifulSoup?

Patricia Arquette
Freigeben: 2024-11-07 22:42:02
Original
231 Leute haben es durchsucht

How to Download Webcomics with Python: urllib and BeautifulSoup?

Diagnose eines Problems beim Herunterladen von Python-Bildern mit urllib

Die vorliegende Frage dreht sich um das Herunterladen von Webcomics in einen bestimmten Ordner mithilfe von Python und dem urllib-Modul. Beim ersten Versuch trat ein Problem auf, bei dem die Datei anscheinend zwischengespeichert und nicht lokal gespeichert wurde. Darüber hinaus musste die Methode zur Bestimmung der Existenz neuer Comics überarbeitet werden.

Dateien korrekt abrufen

Der ursprüngliche Code verwendete urllib.URLopener(), um das Bild abzurufen . Die geeignetere Funktion für diese Aufgabe ist jedoch urllib.urlretrieve(). Diese Funktion speichert das Bild direkt am angegebenen Speicherort, anstatt es nur zwischenzuspeichern.

Bestimmen der Comic-Anzahl

Um die Anzahl der Comics auf der Website zu ermitteln und nur die herunterzuladen Bei den neuesten Versionen kann das Skript den HTML-Inhalt der Website analysieren. Hier ist eine Technik, die die BeautifulSoup-Bibliothek verwendet:

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'))
Nach dem Login kopieren

Vollständiges Skript

Das folgende Skript kombiniert das Herunterladen von Bildern und die Logik zum Zählen von Comics und optimiert den Webcomic-Downloadvorgang:

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)
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie lade ich Webcomics mit Python herunter: urllib und BeautifulSoup?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage