Интернет-очистка обычно включает в себя загрузку, хранение и обработку веб-медиа-контента. В этой главе мы расскажем, как обрабатывать контент, загруженный из Интернета.
Вступление
Веб-медиа-контент, который мы получаем во время очистки, может представлять собой изображения, аудио- и видеофайлы в виде не веб-страниц, а также файлы данных. Но можем ли мы доверять загруженным данным, особенно по расширению данных, которые мы собираемся загрузить и сохранить в памяти нашего компьютера? Это делает необходимым знать о типе данных, которые мы собираемся хранить локально.
Получение медиа-контента с веб-страницы
В этом разделе мы узнаем, как мы можем загружать мультимедийный контент, который правильно представляет тип мультимедиа на основе информации с веб-сервера. Мы можем сделать это с помощью модуля запросов Python, как мы это делали в предыдущей главе.
Во-первых, нам нужно импортировать необходимые модули Python следующим образом:
import requests
Теперь укажите URL медиа-контента, который мы хотим загрузить и сохранить локально.
url = "https://authoraditiagarwal.com/wpcontent/uploads/2018/05/MetaSlider_ThinkBig-1080x180.jpg"
Используйте следующий код для создания объекта ответа HTTP.
r = requests.get(url)
С помощью следующей строки кода мы можем сохранить полученный контент в виде файла .png.
with open("ThinkBig.png",'wb') as f: f.write(r.content)
После запуска вышеуказанного скрипта Python мы получим файл с именем ThinkBig.png, в котором будет загруженный образ.
Извлечение имени файла из URL
После загрузки контента с веб-сайта мы также хотим сохранить его в файл с именем файла, найденным в URL. Но мы также можем проверить, существуют ли номера дополнительных фрагментов и в URL. Для этого нам нужно найти фактическое имя файла из URL.
С помощью следующего скрипта Python, используя urlparse , мы можем извлечь имя файла из URL —
import urllib3 import os url = "https://authoraditiagarwal.com/wpcontent/uploads/2018/05/MetaSlider_ThinkBig-1080x180.jpg" a = urlparse(url) a.path
Вы можете наблюдать результат, как показано ниже —
'/wp-content/uploads/2018/05/MetaSlider_ThinkBig-1080x180.jpg' os.path.basename(a.path)
Вы можете наблюдать результат, как показано ниже —
'MetaSlider_ThinkBig-1080x180.jpg'
Как только вы запустите приведенный выше скрипт, мы получим имя файла из URL.
Информация о типе контента из URL
При извлечении содержимого с веб-сервера по запросу GET мы также можем проверить его информацию, предоставленную веб-сервером. С помощью следующего скрипта Python мы можем определить, что означает веб-сервер с типом контента —
Во-первых, нам нужно импортировать необходимые модули Python следующим образом:
import requests
Теперь нам нужно предоставить URL медиа-контента, который мы хотим загрузить и сохранить локально.
url = "https://authoraditiagarwal.com/wpcontent/uploads/2018/05/MetaSlider_ThinkBig-1080x180.jpg"
Следующая строка кода создаст объект ответа HTTP.
r = requests.get(url, allow_redirects=True)
Теперь мы можем узнать, какую информацию о контенте может предоставить веб-сервер.
for headers in r.headers: print(headers)
Вы можете наблюдать результат, как показано ниже —
Date Server Upgrade Connection Last-Modified Accept-Ranges Content-Length Keep-Alive Content-Type
С помощью следующей строки кода мы можем получить конкретную информацию о типе контента, скажем, тип контента —
print (r.headers.get('content-type'))
Вы можете наблюдать результат, как показано ниже —
image/jpeg
С помощью следующей строки кода мы можем получить конкретную информацию о типе контента, скажем, EType —
print (r.headers.get('ETag'))
Вы можете наблюдать результат, как показано ниже —
None
Соблюдайте следующую команду —
print (r.headers.get('content-length'))
Вы можете наблюдать результат, как показано ниже —
12636
С помощью следующей строки кода мы можем получить конкретную информацию о типе контента, скажем, Server —
print (r.headers.get('Server'))
Вы можете наблюдать результат, как показано ниже —
Apache
Создание миниатюры для изображений
Миниатюра — это очень маленькое описание или представление. Пользователь может захотеть сохранить только миниатюру большого изображения или сохранить как изображение, так и миниатюру. В этом разделе мы собираемся создать эскиз изображения под названием ThinkBig.png, загруженного в предыдущем разделе «Получение медиа-контента с веб-страницы».
Для этого скрипта Python нам нужно установить библиотеку Python с именем Pillow, вилку библиотеки изображений Python, имеющую полезные функции для работы с изображениями. Это может быть установлено с помощью следующей команды —
pip install pillow
Следующий скрипт Python создаст миниатюру изображения и сохранит его в текущем каталоге, добавив префикс 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")
Приведенный выше код очень прост для понимания, и вы можете проверить наличие файла миниатюр в текущем каталоге.
Скриншот с сайта
В веб-очистке очень распространенная задача — сделать снимок экрана веб-сайта. Для реализации этого мы будем использовать селен и веб-драйвер. Следующий скрипт Python возьмет скриншот с веб-сайта и сохранит его в текущем каталоге.
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
Вы можете наблюдать результат, как показано ниже —
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")>>
После запуска скрипта вы можете проверить текущий каталог на файл screenshot.png .
Генерация миниатюр для видео
Предположим, мы загрузили видео с веб-сайта и хотели создать для них миниатюры, чтобы можно было щелкнуть конкретное видео на основе его миниатюры. Для создания миниатюры для видео нам нужен простой инструмент под названием ffmpeg, который можно скачать с www.ffmpeg.org . После загрузки нам необходимо установить его в соответствии со спецификациями нашей ОС.
Следующий скрипт Python сгенерирует миниатюру видео и сохранит его в нашем локальном каталоге —
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"])
После запуска вышеуказанного скрипта мы получим миниатюру с именем thumbnail_solar_video.jpg, сохраненную в нашем локальном каталоге.
Копирование видео MP4 в MP3
Предположим, вы загрузили видеофайл с веб-сайта, но для этого вам нужно только аудио из этого файла, тогда это можно сделать на Python с помощью библиотеки Python moviepy, которую можно установить с помощью следующей команды:
pip install moviepy
Теперь, после успешной установки moviepy с помощью следующего скрипта, мы можем конвертировать MP4 в MP3.
import moviepy.editor as mp clip = mp.VideoFileClip(r"C:\Users\gaurav\Desktop\1234.mp4") clip.audio.write_audiofile("movie_audio.mp3")
Вы можете наблюдать результат, как показано ниже —
[MoviePy] Writing audio in movie_audio.mp3 100%|¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦| 674/674 [00:01<00:00, 476.30it/s] [MoviePy] Done.
Приведенный выше скрипт сохранит аудиофайл MP3 в локальном каталоге.