Bilder und Videos verarbeiten

Beim Web-Scraping werden normalerweise die Webmedieninhalte heruntergeladen, gespeichert und verarbeitet. Lassen Sie uns in diesem Kapitel verstehen, wie der aus dem Web heruntergeladene Inhalt verarbeitet wird.

Einführung

Die Webmedieninhalte, die wir beim Scraping erhalten, können Bilder, Audio- und Videodateien in Form von Nicht-Webseiten sowie Datendateien sein. Aber können wir den heruntergeladenen Daten vertrauen, insbesondere bei der Erweiterung der Daten, die wir herunterladen und in unserem Computerspeicher speichern werden? Daher ist es wichtig zu wissen, welche Art von Daten wir lokal speichern werden.

Abrufen von Medieninhalten von der Webseite

In diesem Abschnitt erfahren Sie, wie Sie Medieninhalte herunterladen können, die den Medientyp basierend auf den Informationen vom Webserver korrekt darstellen. Wir können es mit Hilfe von Python tunrequests Modul wie im vorherigen Kapitel.

Zuerst müssen wir die erforderlichen Python-Module wie folgt importieren:

import requests

Geben Sie nun die URL des Medieninhalts an, den Sie herunterladen und lokal speichern möchten.

url = "https://authoraditiagarwal.com/wpcontent/uploads/2018/05/MetaSlider_ThinkBig-1080x180.jpg"

Verwenden Sie den folgenden Code, um ein HTTP-Antwortobjekt zu erstellen.

r = requests.get(url)

Mit Hilfe der folgenden Codezeile können wir den empfangenen Inhalt als PNG-Datei speichern.

with open("ThinkBig.png",'wb') as f:
   f.write(r.content)

Nach dem Ausführen des obigen Python-Skripts erhalten wir eine Datei mit dem Namen ThinkBig.png, die das heruntergeladene Bild enthält.

Dateinamen aus URL extrahieren

Nach dem Herunterladen des Inhalts von der Website möchten wir ihn auch in einer Datei speichern, deren Dateiname in der URL enthalten ist. Wir können aber auch überprüfen, ob in der URL auch eine Anzahl zusätzlicher Fragmente vorhanden ist. Dazu müssen wir den tatsächlichen Dateinamen aus der URL ermitteln.

Mit Hilfe des folgenden Python-Skripts verwenden Sie urlparsekönnen wir den Dateinamen aus der URL extrahieren -

import urllib3
import os
url = "https://authoraditiagarwal.com/wpcontent/uploads/2018/05/MetaSlider_ThinkBig-1080x180.jpg"
a = urlparse(url)
a.path

Sie können die Ausgabe wie unten gezeigt beobachten -

'/wp-content/uploads/2018/05/MetaSlider_ThinkBig-1080x180.jpg'
os.path.basename(a.path)

Sie können die Ausgabe wie unten gezeigt beobachten -

'MetaSlider_ThinkBig-1080x180.jpg'

Sobald Sie das obige Skript ausführen, erhalten wir den Dateinamen von der URL.

Informationen zum Inhaltstyp über die URL

Beim Extrahieren des Inhalts vom Webserver können wir auf GET-Anfrage auch die vom Webserver bereitgestellten Informationen überprüfen. Mit Hilfe des folgenden Python-Skripts können wir bestimmen, was Webserver mit dem Typ des Inhalts bedeutet -

Zuerst müssen wir die erforderlichen Python-Module wie folgt importieren:

import requests

Jetzt müssen wir die URL des Medieninhalts angeben, den wir herunterladen und lokal speichern möchten.

url = "https://authoraditiagarwal.com/wpcontent/uploads/2018/05/MetaSlider_ThinkBig-1080x180.jpg"

Die folgende Codezeile erstellt ein HTTP-Antwortobjekt.

r = requests.get(url, allow_redirects=True)

Jetzt können wir abrufen, welche Art von Informationen über Inhalte vom Webserver bereitgestellt werden können.

for headers in r.headers: print(headers)

Sie können die Ausgabe wie unten gezeigt beobachten -

Date
Server
Upgrade
Connection
Last-Modified
Accept-Ranges
Content-Length
Keep-Alive
Content-Type

Mit Hilfe der folgenden Codezeile können wir die speziellen Informationen über den Inhaltstyp erhalten, z. B. Inhaltstyp -

print (r.headers.get('content-type'))

Sie können die Ausgabe wie unten gezeigt beobachten -

image/jpeg

Mithilfe der folgenden Codezeile können wir die speziellen Informationen zum Inhaltstyp abrufen, z. B. EType -

print (r.headers.get('ETag'))

Sie können die Ausgabe wie unten gezeigt beobachten -

None

Beachten Sie den folgenden Befehl:

print (r.headers.get('content-length'))

Sie können die Ausgabe wie unten gezeigt beobachten -

12636

Mithilfe der folgenden Codezeile können wir die speziellen Informationen zum Inhaltstyp abrufen, z. B. Server -

print (r.headers.get('Server'))

Sie können die Ausgabe wie unten gezeigt beobachten -

Apache

Thumbnail für Bilder generieren

Thumbnail ist eine sehr kleine Beschreibung oder Darstellung. Ein Benutzer möchte möglicherweise nur die Miniaturansicht eines großen Bildes oder sowohl das Bild als auch die Miniaturansicht speichern. In diesem Abschnitt erstellen wir eine Miniaturansicht des genannten BildesThinkBig.png im vorherigen Abschnitt „Abrufen von Medieninhalten von der Webseite“ heruntergeladen.

Für dieses Python-Skript müssen wir die Python-Bibliothek Pillow installieren, eine Abzweigung der Python-Bildbibliothek mit nützlichen Funktionen zum Bearbeiten von Bildern. Es kann mit Hilfe des folgenden Befehls installiert werden:

pip install pillow

Das folgende Python-Skript erstellt eine Miniaturansicht des Bildes und speichert es im aktuellen Verzeichnis, indem der Miniaturbilddatei ein Präfix vorangestellt wird Th_

import glob
from PIL import Image
for infile in glob.glob("ThinkBig.png"):
   img = Image.open(infile)
   img.thumbnail((128, 128), Image.ANTIALIAS)
   if infile[0:2] != "Th_":
      img.save("Th_" + infile, "png")

Der obige Code ist sehr einfach zu verstehen und Sie können im aktuellen Verzeichnis nach der Miniaturbilddatei suchen.

Screenshot von der Website

Beim Web-Scraping besteht eine sehr häufige Aufgabe darin, einen Screenshot einer Website zu erstellen. Um dies zu implementieren, werden wir Selen und Webdriver verwenden. Das folgende Python-Skript nimmt den Screenshot von der Website auf und speichert ihn im aktuellen Verzeichnis.

From selenium import webdriver
path = r'C:\\Users\\gaurav\\Desktop\\Chromedriver'
browser = webdriver.Chrome(executable_path = path)
browser.get('https://tutorialspoint.com/')
screenshot = browser.save_screenshot('screenshot.png')
browser.quit

Sie können die Ausgabe wie unten gezeigt beobachten -

DevTools listening on ws://127.0.0.1:1456/devtools/browser/488ed704-9f1b-44f0-
a571-892dc4c90eb7
<bound method WebDriver.quit of <selenium.webdriver.chrome.webdriver.WebDriver
(session="37e8e440e2f7807ef41ca7aa20ce7c97")>>

Nach dem Ausführen des Skripts können Sie Ihr aktuelles Verzeichnis auf überprüfen screenshot.png Datei.

Miniaturansicht für Video

Angenommen, wir haben Videos von der Website heruntergeladen und wollten Miniaturansichten für sie erstellen, damit auf ein bestimmtes Video basierend auf dessen Miniaturansicht geklickt werden kann. Zum Generieren von Miniaturansichten für Videos benötigen wir ein einfaches Tool namensffmpeg welches von heruntergeladen werden kann www.ffmpeg.org. Nach dem Herunterladen müssen wir es gemäß den Spezifikationen unseres Betriebssystems installieren.

Das folgende Python-Skript generiert eine Miniaturansicht des Videos und speichert es in unserem lokalen Verzeichnis.

import subprocess
video_MP4_file = “C:\Users\gaurav\desktop\solar.mp4
thumbnail_image_file = 'thumbnail_solar_video.jpg'
subprocess.call(['ffmpeg', '-i', video_MP4_file, '-ss', '00:00:20.000', '-
   vframes', '1', thumbnail_image_file, "-y"])

Nach dem Ausführen des obigen Skripts erhalten wir das Miniaturbild mit dem Namen thumbnail_solar_video.jpg in unserem lokalen Verzeichnis gespeichert.

Rippen eines MP4-Videos in einen MP3

Angenommen, Sie haben eine Videodatei von einer Website heruntergeladen, benötigen jedoch nur Audio aus dieser Datei, um Ihren Zweck zu erfüllen. Dies kann dann in Python mithilfe der aufgerufenen Python-Bibliothek erfolgen moviepy die mit Hilfe des folgenden Befehls installiert werden kann -

pip install moviepy

Nach der erfolgreichen Installation von moviepy mit Hilfe des folgenden Skripts können wir nun MP4 in MP3 konvertieren.

import moviepy.editor as mp
clip = mp.VideoFileClip(r"C:\Users\gaurav\Desktop\1234.mp4")
clip.audio.write_audiofile("movie_audio.mp3")

Sie können die Ausgabe wie unten gezeigt beobachten -

[MoviePy] Writing audio in movie_audio.mp3
100%|¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦| 674/674 [00:01<00:00,
476.30it/s]
[MoviePy] Done.

Das obige Skript speichert die Audio-MP3-Datei im lokalen Verzeichnis.