Persoalan yang timbul berkisar tentang memuat turun komik web ke folder yang ditetapkan menggunakan Python dan modul urllib. Percubaan awal menghadapi masalah di mana fail kelihatan dicache dan bukannya disimpan secara setempat. Selain itu, kaedah untuk menentukan kewujudan komik baharu perlu ditangani.
Mengambil Fail Dengan Betul
Kod asal menggunakan urllib.URLopener() untuk mendapatkan semula imej . Walau bagaimanapun, fungsi yang lebih sesuai untuk tugas ini ialah urllib.urlretrieve(). Fungsi ini menyimpan terus imej ke lokasi yang ditentukan dan bukannya hanya menyimpannya dalam cache.
Menentukan Kiraan Komik
Untuk mengenal pasti bilangan komik di tapak web dan memuat turun hanya yang terkini, skrip boleh menghuraikan kandungan HTML tapak web. Berikut ialah teknik menggunakan perpustakaan 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'))
Skrip Lengkap
Menggabungkan muat turun imej dan logik kiraan komik, skrip berikut memperkemas proses muat turun komik web:
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)
Atas ialah kandungan terperinci Bagaimana untuk memuat turun Webcomics dengan Python: urllib dan BeautifulSoup?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!