首页 > 编程语言 >无涯教程-Python爬虫 - 处理图像和视频

无涯教程-Python爬虫 - 处理图像和视频

时间:2023-11-29 23:31:48浏览次数:50  
标签:缩略图 Python ThinkBig 无涯 爬虫 URL import

Web抓取通常涉及下载,存储和处理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 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内容类型

从Web服务器提取内容时,通过GET请求,还可以检查Web服务器提供的信息,借助以下Python脚本,无涯教程可以确定Web服务器对内容类型的含义-

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

import requests

现在,需要提供要下载并在本地存储的媒体内容的URL。

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)

您可以观察到如下所示的输出-

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

在以下代码行的帮助下,可以获得有关内容类型的特定信息,如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脚本,需要安装名为Pillow的Python库,该库是Python Image库的一个分支,具有处理图像的有用函数。

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://learnfk.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文件保存在本地目录中。

参考链接

https://www.learnfk.com/python-web-scraping/python-web-scraping-processing-images-and-videos.html

标签:缩略图,Python,ThinkBig,无涯,爬虫,URL,import
From: https://blog.51cto.com/u_14033984/8620781

相关文章

  • 聪明方法学python task5 条件/代码风格
    条件控制elif代替了C语言中的elseif缩进划分代码块嵌套if仍然成立多返回语句defabs(n):  ifn<0:    return-n  returnn match-case类比switch-case语句_可以匹配一切。deftest(a):​•matcha:​•case1:​•......
  • 聪明办法学python第三次打卡
    #ifelse语句if: else: #elif语句:if: elif: else: #match-case语句:matchmcase1: case2: case3: case4: case5: 一个case也可以设置多个匹配条件,条件使用|隔开......
  • 【Python爬虫】第13篇:scrapy项目配置和数据获取。从0到scrapy高手笔记(附代码,可自取)
    本文主要学习一下关于爬虫的相关前置知识和一些理论性的知识,通过本文我们能够知道什么是爬虫,都有那些分类,爬虫能干什么等,同时还会站在爬虫的角度复习一下http协议。全套笔记和代码自取地址:请移步这里感兴趣的小伙伴可以自取哦,欢迎大家点赞转发~共8章,37子模块scrapy爬......
  • 聪明办法学python—task05&选学01
    条件语句if语句:1.elseif——>elif2.后面是冒号3.其余与c语言相同循环结构while循环while条件:bodystatmentsfor-in循环for变量in字符串/范围/集合:statements结束循环breakcontinuereturn与c语言相同 ......
  • 【Python】类的声明和使用
    1、类的声明语法:classMainWindow:"""classinformation"""pass#classbody2、特殊方法2.1init构造函数,类会调用该方法构造对象。语法:classTest:def__init__(self,args...): pass2.2del析构函数,在对象销毁时调用。语法:def__del__(s......
  • 第三次python笔记
    python中的conditions:1.什么是contions?:所谓的condition即是条件变量,这种机制是在满足了特定的条件后,线程才可以访问相关的数据。这种同步机制就是一个线程等待特定的条件,另一个线程通知它条件已经发生。一旦条件发生,该线程就会获取锁,从而独占共享资源的访问。 Condition......
  • 麻烦问一下Python采集到的文本列表中有大量的 ', ' 符号 想这种符号怎么删除
    大家好,我是皮皮。一、前言前几天在Python铂金流群【泅渡】问了一个Python字符处理的问题,一起来看看吧。问题描述:麻烦问一下Python采集到的文本列表中有大量的  ','  符号 想这种符号怎么删除?二、实现过程这里【不上班能干啥!】和【瑜亮老师】分别给了一个指导,如下......
  • java和python混编如何实现服务注册和服务发现呢
    在Java和Python混合编程环境中实现服务注册和发现,你可以考虑以下几种方案:使用服务注册表/服务发现工具服务注册表1.Consul:Consul是一个开源的服务网格解决方案,它提供了服务注册和发现的功能。Consul允许你注册服务并发现其他服务的位置信息。服务发现2.NetflixEureka:Eure......
  • 无涯教程-Python爬虫 - 数据处理
    在前面的章节中,无涯教程学习了有关通过各种Python模块从网页中提取数据或进行网页抓取的知识。在本章中研究各种技术来处理已抓取的数据。要处理已抓取的数据,必须将数据以特定格式存储在本地计算机上,例如电子表格(CSV),JSON或有时存储在MySQL等数据库中。CSV和JSON数据处理首先......
  • # yyds干货盘点 # 麻烦问一下Python采集到的文本列表中有大量的 ', ' 符号 想这种符号
    大家好,我是皮皮。一、前言前几天在Python铂金流群【泅渡】问了一个Python字符处理的问题,一起来看看吧。问题描述:麻烦问一下Python采集到的文本列表中有大量的  ','  符号 想这种符号怎么删除?二、实现过程这里【不上班能干啥!】和【瑜亮老师】分别给了一个指导,如下图所示:......