开发手册 欢迎您!
软件开发者资料库

处理图像和视频

Python Web Scraping处理图像和视频 - 从简单和简单的步骤学习Python Web Scraping,从基本到高级概念,包括简介,Python入门,用于Web Scraping的Python模块,Web Scraping的合法性,数据提取,数据处理,处理图像和视频,处理文本,刮取动态网站,基于刮痧表格的网站,处理CAPTCHA,使用刮板进行测试。

Web抓取通常涉及下载,存储和处理Web媒体内容.在本章中,让我们了解如何处理从网上下载的内容.

简介

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

从网页获取媒体内容

在本节中,我们将学习如何根据来自Web服务器的信息下载正确表示媒体类型的媒体内容.我们可以在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 urllib3import osurl = "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内容类型的信息

从Web服务器提取内容时,通过GET请求,我们也可以检查Web服务器提供的信息.借助以下Python脚本,我们可以确定Web服务器对内容类型的含义 :

首先,我们需要导入必要的Python模块,如下所示;

import requests

现在,我们需要提供媒体内容的网址想要在本地下载和存储.

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

以下代码行将创建HTTP响应对象.

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

现在,我们可以获取Web服务器可以提供的有关内容的类型信息.

for headers in r.headers: print(headers)

你可以观察输出如下所示 :

DateServerUpgradeConnectionLast-ModifiedAccept-RangesContent-LengthKeep-AliveContent-Type

借助以下代码行,我们可以获得有关内容类型的特定信息,比如content-type :

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

你可以观察输出如下所示 :

  image/jpeg

With在下面的代码行的帮助下,我们可以获得有关内容类型的特定信息,比如EType :

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

您可以观察输出如下所示 :

 无

观察以下命令 :

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

您可以观察输出如下所示 :

  12636

借助以下代码行,我们可以获得有关内容类型的特定信息,例如服务器和减号;

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

您可以观察输出,如下所示 :

  Apache

为图像生成缩略图

缩略图是一种非常小的描述或表示.用户可能想要仅保存大图像的缩略图或保存图像以及缩略图.在本节中,我们将创建在上一节"从网页获取媒体内容"中下载的名为 ThinkBig.png 的图像的缩略图.

For在这个Python脚本中,我们需要安装名为Pillow的Python库,它是Python Image库的一个分支,具有操作图像的有用功能.它可以在以下命令和减号的帮助下安装;

  pip install pillow

以下Python脚本将创建图像的缩略图,并通过在缩略图文件前加上 Th _

import globfrom PIL import Imagefor 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 webdriverpath = r'C:\\Users\\gaurav\\Desktop\\Chromedriver'browser = webdriver.Chrome(executable_path = path)browser.get('https://IT屋.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>

运行脚本后,您可以检查 screenshot.png 文件的当前目录.

Screenshot

视频缩略图生成

假设我们已下载来自网站视频,并希望为他们生成缩略图,以便可以点击基于其缩略图的特定视频.为了生成视频缩略图,我们需要一个名为 ffmpeg 的简单工具,可以从 www.ffmpeg.org 下载.下载后,我们需要按照操作系统的规格进行安装.

以下Python脚本将生成视频的缩略图,并将其保存到我们的本地目录 :

import subprocessvideo_MP4_file = "C:\Users\gaurav\desktop\solar.mp4thumbnail_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 ,可以安装wi以下命令和减号的帮助;

  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.mp3100%|¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦| 674/674 [00:01<00:00,476.30it/s][MoviePy] Done.

以上脚本会将音频MP3文件保存在本地目录中.