Python网络爬虫 处理图片和视频

Python网络爬虫 处理图片和视频

网络爬虫通常涉及下载、存储和处理网络媒体内容。在本章中,让我们了解如何处理从网上下载的内容。

简介

我们在爬虫过程中获得的网络媒体内容可以是图像、音频和视频文件,以非网页的形式,也可以是数据文件。但是,我们能相信下载的数据吗,特别是我们要下载并存储在计算机内存中的数据的扩展?这使得我们必须了解我们将在本地存储的数据类型。

从网页上获取媒体内容

在这一节中,我们将学习如何根据网页服务器的信息,下载能正确表示媒体类型的媒体内容。我们可以在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脚本,我们需要安装名为Pillow的Python库,它是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")

上面的代码非常容易理解,你可以在当前目录下检查出缩略图文件。

从网站截图

在网络爬虫中,一个非常常见的任务是对网站进行截图。为了实现这一点,我们将使用Selenium和webdriver。下面的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中借助名为 moviepy 的Python库来完成,该库可以在以下命令的帮助下安装

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文件。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程