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'))
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)
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!