Heim > Artikel > Backend-Entwicklung > Crawlen Sie Bilder von der Website und laden Sie sie automatisch lokal herunter
Im Internetzeitalter haben sich die Menschen daran gewöhnt, Bilder von verschiedenen Websites wie Galerien und sozialen Plattformen herunterzuladen. Wenn Sie nur eine kleine Anzahl Bilder herunterladen müssen, ist die manuelle Bedienung nicht umständlich. Wenn jedoch eine große Anzahl von Bildern heruntergeladen werden muss, wird der manuelle Vorgang sehr zeitaufwändig und mühsam. Zu diesem Zeitpunkt muss Automatisierungstechnologie eingesetzt werden, um das automatische Herunterladen von Bildern zu realisieren.
In diesem Artikel erfahren Sie, wie Sie mithilfe der Python-Crawler-Technologie automatisch Bilder von der Website auf den lokalen Computer herunterladen. Dieser Prozess ist in zwei Schritte unterteilt: Der erste Schritt besteht darin, die Bildlinks auf der Website mithilfe der Python-Anforderungsbibliothek oder der Selenium-Bibliothek abzurufen Links.
Schritt eins: Holen Sie sich den Bildlink
Sehen wir uns zunächst an, wie Sie die Anforderungsbibliothek verwenden, um den Bildlink zu crawlen. Der Beispielcode lautet wie folgt:
import requests from bs4 import BeautifulSoup url = 'http://example.com' response = requests.get(url) soup = BeautifulSoup(response.content, 'html.parser') img_tags = soup.find_all('img') urls = [img['src'] for img in img_tags]
Nehmen Sie die Beispielwebsite als Beispiel. Verwenden Sie zunächst die Anforderungsbibliothek zum Crawlen von Webinhalten und verwenden Sie die BeautifulSoup-Bibliothek zum Parsen von HTML. Dann verwenden wir die Methode soup.find_all('img')
, um alle IMG-Tags in HTML abzurufen, und verwenden Listenverständnis, um den Wert des src-Attributs in jedem Tag zu extrahieren. soup.find_all('img')
方法来获取 HTML 中所有的 img 标签,并使用列表解析式将每个标签中的 src 属性的值提取出来。
另一种获取图片链接的方式是使用 selenium 库,示例代码如下:
from selenium import webdriver from selenium.webdriver.chrome.service import Service from selenium.webdriver.chrome.options import Options from time import sleep url = 'http://example.com' options = Options() options.add_argument('--headless') service = Service('/path/to/chromedriver') driver = webdriver.Chrome(service=service, options=options) driver.get(url) sleep(2) img_tags = driver.find_elements_by_tag_name('img') urls = [img.get_attribute('src') for img in img_tags]
这里我们使用了 ChromeDriver,使用时需要先将自己电脑上的 ChromeDriver 的路径填入到示例代码中的 'path/to/chromedriver'
处。第二行代码启用无头浏览器,避免在 Chrome 浏览器窗口中进行操作,提高运行速度。然后我们使用 selenium 库中的 webdriver 模块建立了一个 Chrome 浏览器的实例,通过设置 driver.get(url)
来打开 Example 网站。然后使用 driver.find_elements_by_tag_name('img')
获取到所有的 img 标签,进而获取每个标签中的 src 属性的值。
第二步:下载图片
下载图片的方式有多种,这里我们使用 Python 自带的 urllib 库或者 requests 库来下载。示例代码如下:
import urllib.request for url in urls: filename = url.split('/')[-1] urllib.request.urlretrieve(url, filename)
这里使用 urllib.request 库将图片从网络上下载到本地,使用 url.split('/')[-1]
来获取图片的文件名,并将其赋值给变量 filename,最后使用 urllib.request.urlretrieve(url, filename)
将图片下载到本地。需要注意的是,如果 url 中包含中文,还需要对 url 进行编码处理。
这里再简单介绍一下使用 requests 库下载图片的方法,示例代码如下:
import requests for url in urls: filename = url.split('/')[-1] response = requests.get(url) with open(filename, 'wb') as f: f.write(response.content)
这里使用 requests 库获取图片二进制文件,将其写入文件。需要注意的是,由于二进制文件写入模式为 'wb'
,需要使用 with open(filename, 'wb') as f:
Eine andere Möglichkeit, Bildlinks zu erhalten, ist die Verwendung der Selenium-Bibliothek:
rrreee🎜Hier verwenden wir ChromeDriver, den Sie benötigen Um es zum ersten Mal zu verwenden, geben Sie im Beispielcode den Pfad von ChromeDriver auf Ihrem Computer zu'path/to/chromedriver'
ein. Die zweite Codezeile ermöglicht einen Headless-Browser, der die Bedienung im Chrome-Browserfenster vermeidet und die Geschwindigkeit erhöht. Dann verwenden wir das Webdriver-Modul in der Selenium-Bibliothek, um eine Instanz des Chrome-Browsers zu erstellen und die Beispielwebsite zu öffnen, indem wir driver.get(url)
festlegen. Verwenden Sie dann driver.find_elements_by_tag_name('img')
, um alle IMG-Tags abzurufen und dann den Wert des src-Attributs in jedem Tag abzurufen. 🎜🎜Schritt 2: Bilder herunterladen 🎜🎜Es gibt viele Möglichkeiten, Bilder herunterzuladen. Hier verwenden wir Pythons eigene URLlib-Bibliothek oder Anforderungsbibliothek zum Herunterladen. Der Beispielcode lautet wie folgt: 🎜rrreee🎜Hier verwenden wir die Bibliothek urllib.request, um Bilder aus dem Internet lokal herunterzuladen. Verwenden Sie zum Abrufen url.split('/')[-1]
Geben Sie den Dateinamen des Bildes ein, weisen Sie ihn der Variablen Dateiname zu und verwenden Sie schließlich urllib.request.urlretrieve(url, filename)
, um das Bild lokal herunterzuladen. Es ist zu beachten, dass die URL auch codiert werden muss, wenn die URL Chinesisch enthält. 🎜🎜Hier finden Sie eine kurze Einführung in die Verwendung der Anforderungsbibliothek zum Herunterladen von Bildern. Der Beispielcode lautet wie folgt: 🎜rrreee🎜Hier verwenden wir die Anforderungsbibliothek, um die Bildbinärdatei abzurufen und in die Datei zu schreiben. Es ist zu beachten, dass Sie zum Öffnen der Datei mit open(filename, 'wb') as f:
verwenden müssen, da der Schreibmodus für Binärdateien 'wb'
ist und Schreiben, um sicherzustellen, dass jede Datei ordnungsgemäß geschlossen wird. 🎜🎜Zusammenfassung🎜🎜Zusammenfassend lässt sich sagen, dass wir mithilfe der Python-Crawler-Technologie Bilder auf der Website problemlos crawlen und automatisch lokal herunterladen können. Diese Automatisierungstechnologie kann uns helfen, die Arbeitseffizienz zu verbessern und ist sehr hilfreich bei Arbeiten, die die Verarbeitung einer großen Anzahl von Bildern erfordern. Gleichzeitig müssen wir daran erinnert werden, dass das Crawlen von Bildern von Websites den einschlägigen Gesetzen und Vorschriften entsprechen und das Urheberrecht der Website respektieren muss. Wenn Sie keine offizielle Genehmigung oder Genehmigung der Website haben, dürfen Sie Bilder auf der Website nicht ohne Genehmigung crawlen. 🎜Das obige ist der detaillierte Inhalt vonCrawlen Sie Bilder von der Website und laden Sie sie automatisch lokal herunter. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!