이미지 및 비디오 처리

웹 스크래핑에는 일반적으로 웹 미디어 콘텐츠의 다운로드, 저장 및 처리가 포함됩니다. 이 장에서는 웹에서 다운로드 한 콘텐츠를 처리하는 방법을 이해하겠습니다.

소개

스크래핑 중에 획득하는 웹 미디어 콘텐츠는 데이터 파일뿐만 아니라 웹 페이지가 아닌 형태의 이미지, 오디오 및 비디오 파일 일 수 있습니다. 그러나 다운로드 한 데이터를 특히 컴퓨터 메모리에 다운로드하여 저장할 데이터의 확장에 대해 신뢰할 수 있습니까? 따라서 로컬에 저장할 데이터 유형을 알아야합니다.

웹 페이지에서 미디어 콘텐츠 가져 오기

이 섹션에서는 웹 서버의 정보를 기반으로 미디어 유형을 올바르게 나타내는 미디어 콘텐츠를 다운로드하는 방법을 알아 봅니다. Python의 도움으로 할 수 있습니다.requests 이전 장에서했던 것처럼 모듈.

먼저 필요한 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

다음 코드 줄의 도움으로 서버와 같은 콘텐츠 유형에 대한 특정 정보를 얻을 수 있습니다.

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. 다운로드 후 OS 사양에 따라 설치해야합니다.

다음 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 파일을 저장합니다.