Traitement des images et des vidéos

Le scraping Web implique généralement le téléchargement, le stockage et le traitement du contenu multimédia Web. Dans ce chapitre, voyons comment traiter le contenu téléchargé depuis le Web.

introduction

Le contenu multimédia Web que nous obtenons lors du scraping peut être des images, des fichiers audio et vidéo, sous la forme de pages non Web ainsi que des fichiers de données. Mais, pouvons-nous faire confiance aux données téléchargées en particulier sur l'extension des données que nous allons télécharger et stocker dans la mémoire de notre ordinateur? Il est donc essentiel de connaître le type de données que nous allons stocker localement.

Obtenir du contenu multimédia à partir d'une page Web

Dans cette section, nous allons apprendre comment télécharger du contenu multimédia qui représente correctement le type de support basé sur les informations du serveur Web. Nous pouvons le faire avec l'aide de Pythonrequests module comme nous l'avons fait dans le chapitre précédent.

Tout d'abord, nous devons importer les modules Python nécessaires comme suit -

import requests

Maintenant, fournissez l'URL du contenu multimédia que nous voulons télécharger et stocker localement.

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

Utilisez le code suivant pour créer un objet de réponse HTTP.

r = requests.get(url)

À l'aide de la ligne de code suivante, nous pouvons enregistrer le contenu reçu sous forme de fichier .png.

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

Après avoir exécuté le script Python ci-dessus, nous obtiendrons un fichier nommé ThinkBig.png, qui contiendrait l'image téléchargée.

Extraction du nom de fichier de l'URL

Après avoir téléchargé le contenu du site Web, nous voulons également l'enregistrer dans un fichier avec un nom de fichier trouvé dans l'URL. Mais nous pouvons également vérifier si des nombres de fragments supplémentaires existent également dans l'URL. Pour cela, nous devons trouver le nom de fichier réel à partir de l'URL.

Avec l'aide du script Python suivant, en utilisant urlparse, nous pouvons extraire le nom de fichier de l'URL -

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

Vous pouvez observer la sortie comme indiqué ci-dessous -

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

Vous pouvez observer la sortie comme indiqué ci-dessous -

'MetaSlider_ThinkBig-1080x180.jpg'

Une fois que vous exécutez le script ci-dessus, nous obtiendrons le nom de fichier de l'URL.

Informations sur le type de contenu de l'URL

Lors de l'extraction du contenu du serveur Web, sur demande GET, nous pouvons également vérifier ses informations fournies par le serveur Web. À l'aide du script Python suivant, nous pouvons déterminer ce que signifie le serveur Web avec le type de contenu -

Tout d'abord, nous devons importer les modules Python nécessaires comme suit -

import requests

Maintenant, nous devons fournir l'URL du contenu multimédia que nous voulons télécharger et stocker localement.

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

La ligne de code suivante créera un objet de réponse HTTP.

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

Maintenant, nous pouvons obtenir quel type d'informations sur le contenu peut être fourni par le serveur Web.

for headers in r.headers: print(headers)

Vous pouvez observer la sortie comme indiqué ci-dessous -

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

Avec l'aide de la ligne de code suivante, nous pouvons obtenir des informations particulières sur le type de contenu, par exemple content-type -

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

Vous pouvez observer la sortie comme indiqué ci-dessous -

image/jpeg

À l'aide de la ligne de code suivante, nous pouvons obtenir des informations particulières sur le type de contenu, disons EType -

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

Vous pouvez observer la sortie comme indiqué ci-dessous -

None

Observez la commande suivante -

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

Vous pouvez observer la sortie comme indiqué ci-dessous -

12636

Avec l'aide de la ligne de code suivante, nous pouvons obtenir des informations particulières sur le type de contenu, disons Serveur -

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

Vous pouvez observer la sortie comme indiqué ci-dessous -

Apache

Génération de vignettes pour les images

La vignette est une très petite description ou représentation. Un utilisateur peut vouloir enregistrer uniquement la vignette d'une grande image ou enregistrer à la fois l'image et la vignette. Dans cette section, nous allons créer une vignette de l'image nomméeThinkBig.png téléchargé dans la section précédente «Obtention de contenu multimédia à partir d'une page Web».

Pour ce script Python, nous devons installer la bibliothèque Python nommée Pillow, un fork de la bibliothèque d'images Python ayant des fonctions utiles pour manipuler les images. Il peut être installé à l'aide de la commande suivante -

pip install pillow

Le script Python suivant créera une vignette de l'image et l'enregistrera dans le répertoire courant en préfixant le fichier vignette avec 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")

Le code ci-dessus est très facile à comprendre et vous pouvez vérifier le fichier de vignettes dans le répertoire actuel.

Capture d'écran du site Web

Dans le scraping Web, une tâche très courante consiste à prendre une capture d'écran d'un site Web. Pour implémenter cela, nous allons utiliser le sélénium et le webdriver. Le script Python suivant prendra la capture d'écran du site Web et l'enregistrera dans le répertoire actuel.

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

Vous pouvez observer la sortie comme indiqué ci-dessous -

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")>>

Après avoir exécuté le script, vous pouvez vérifier votre répertoire actuel pour screenshot.png fichier.

Génération de vignettes pour la vidéo

Supposons que nous ayons téléchargé des vidéos à partir du site Web et que nous voulions générer des vignettes pour elles afin qu'une vidéo spécifique, basée sur sa vignette, puisse être cliquée. Pour générer des vignettes pour les vidéos, nous avons besoin d'un outil simple appeléffmpeg qui peut être téléchargé depuis www.ffmpeg.org. Après le téléchargement, nous devons l'installer selon les spécifications de notre système d'exploitation.

Le script Python suivant générera une vignette de la vidéo et l'enregistrera dans notre répertoire local -

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"])

Après avoir exécuté le script ci-dessus, nous obtiendrons la vignette nommée thumbnail_solar_video.jpg enregistré dans notre répertoire local.

Extraction d'une vidéo MP4 en MP3

Supposons que vous ayez téléchargé un fichier vidéo à partir d'un site Web, mais que vous n'ayez besoin que de l'audio de ce fichier pour servir votre objectif, alors cela peut être fait en Python à l'aide de la bibliothèque Python appelée moviepy qui peut être installé à l'aide de la commande suivante -

pip install moviepy

Maintenant, après avoir installé avec succès moviepy à l'aide du script suivant, nous pouvons convertir et MP4 en MP3.

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

Vous pouvez observer la sortie comme indiqué ci-dessous -

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

Le script ci-dessus enregistrera le fichier audio MP3 dans le répertoire local.