python3.6爬虫案例:爬取某网站所有PPT(下)。

news/2024/5/10 23:34:31/文章来源:https://blog.csdn.net/JiShun_Wang/article/details/79947084

上篇博客:python3.6爬虫案例:爬取某网站所有PPT(上)给大家介绍了爬取(http://www.1ppt.com/)网站中的ppt文件,爬下来的文件如下:


所以,我们就要考虑将其名称修改为其在网页中显示的名字,并将其批量解压到指定文件夹。

一、批量修改压缩文件名称。

细心的伙伴可以从上图发现,压缩文件的格式不同有zip、rar两种格式,所以我们需要分别处理,在后续的批量解压文件中需要不同的python模块进行处理。批量修改压缩文件名称的思路不难,主要运用os模块,依次打开每个主题中每个栏目下的压缩文件,同时打开zip_utl.txt文件,匹配压缩文件名,匹配成功将中文名称重新命名为压缩文件名称。py文件为Change_file_name.py,代码如下:

import os#打开类目url,选中文件夹
def split_(string):st = string.strip().split(';')return st#处理文件夹名称
def judgeName(name):fh = ['?','\\','/',':','*','"','<','>','|']for fh_ in fh:if fh_ in name:name = name.replace(fh_, '_')return name#传入一个当前文件夹名称,对其子文件进行更改名称
def change_file_name(current_file_path):#变量格式:'F://ppt//中国风背景图片//'print("正在更改"+current_file_path+"文件夹下的内容")current_file_names = os.listdir(current_file_path)if len(current_file_names)>2:f = open(current_file_path+'zip_url.txt','r',encoding='utf-8')current_zip_url_names = f.readlines()f.close()for current_file_name in current_file_names:file_format = current_file_name[current_file_name.find("."):]#读取当前文件格式#读取文件名称file_name = current_file_name[:current_file_name.find(".")]#在zip_url文件中遍历for zip_url_name in current_zip_url_names:zip_url_name = split_(zip_url_name)zip_name = zip_url_name[0]#         print(name)zip_url = zip_url_name[1]file_real_name = zip_url.split('/')[-1][:zip_url.split('/')[-1].find(".")]#在zip_url中的链接中找到压缩文件名if file_name == file_real_name:try:if file_format == '.rar':#判断格式,精确重命名,后面文件批量解压不同的格式有不同的方法。os.rename(current_file_path+file_name+'.rar',current_file_path+zip_name+'.rar')else:os.rename(current_file_path+file_name+'.zip',current_file_path+zip_name+'.zip')except:passelse:passdef main():with open('F://ppt//url.txt','r') as f_root_url:zhu_ti_names = f_root_url.readlines()for zhu_ti_item in zhu_ti_names:print("正在处理"+zhu_ti_item+'_文件夹下的内容')zhu_ti_name = split_(zhu_ti_item)[0]#提取主题名with open('F://ppt//'+zhu_ti_name+'//url.txt','r') as f:lei_bie_names = f.readlines()for lei_bie_item in lei_bie_names:lei_bie_name = judgeName(split_(lei_bie_item)[0])change_file_name('F://ppt//'+zhu_ti_name+'//'+lei_bie_name+'//')
if __name__ =="__main__":main()

运行程序后,效果如下


二、批量解压缩文件到指定文件夹

有了这些文件,如果我们采用批量下载文件的那种方法,未免太浪费时间。python的zipfile与unrar中的rarfile可以分别解压zip、rar文件。思路是遍历每个主题文件夹下的栏目文件夹,找到每个压缩文件,判断其格式,采用相应的方法将需要的压缩包中的文件解压到指定文件夹。该部分的py文件为:ExtractArchiveFile.py,代码如下:

import zipfile
import os
from unrar import rarfile#打开类目url,选中文件夹
def split_(string):st = string.strip().split(';')return st#处理文件夹名称
def judgeName(name):fh = ['?','\\','/',':','*','"','<','>','|']for fh_ in fh:if fh_ in name:name = name.replace(fh_, '_')return name#解压缩文件
def archive_extract(zip_exit_file, one_file, two_file):#zip文件所在目录,主题文件夹,类别文件夹current_file_path = 'F://ppt1//'+one_file+'//'+two_file+'//' #用于创建新的主题文件夹和类别文件夹current_file_names = os.listdir(zip_exit_file) #压缩文件所在的类别文件夹下的所有文件for current_file_name in current_file_names:print(current_file_name)archive_format = current_file_name[current_file_name.find('.'):] #压缩文件格式archive_name =  current_file_name[:current_file_name.find('.')]#压缩文件名称if archive_format == '.zip':#判断压缩文件类型,不同的类型解压所用的包不同azip = zipfile.ZipFile(zip_exit_file+current_file_name,'r')#读取压缩包里面的文件try:zip_num = 1#如果压缩文件中有多个文件,命名以此加1for filename in azip.namelist():#遍历所有文件
#                     print('---'+filename)filename_lenth = len(filename)file_format = filename[filename.find('.',filename_lenth-5):]#提取压缩文件中子文件的格式#                 print(file_format)if file_format in ['.pptx', '.ppt' , '.jpg', 'JPG']:#判断是否是需要的文件,如果是则解压到指定文件夹try:azip.extract(filename, path=current_file_path)#解压except:continueif zip_num == 1:#首个文件命名格式os.rename(current_file_path+filename,current_file_path+archive_name+file_format)zip_num += 1else:#如果是多个文件,命名加1os.rename(current_file_path+filename,current_file_path+archive_name+str(zip_num)+file_format)zip_num += 1finally:passazip.close()if archive_format == '.rar':arar = rarfile.RarFile(zip_exit_file+current_file_name,'r')try:rar_num = 1for filename in arar.namelist():#                 print(filename)filename_lenth = len(filename)file_format = filename[filename.find('.',filename_lenth-5):]if file_format in ['.pptx', '.ppt' , '.jpg', 'JPG']:try:arar.extract(filename, path=current_file_path)except:continueif rar_num == 1:os.rename(current_file_path+filename,current_file_path+archive_name+file_format)rar_num += 1else:os.rename(current_file_path+filename,current_file_path+archive_name+str(rar_num)+file_format)rar_num += 1#                 breakfinally:pass#     breakprint('结束')def main():with open('F://ppt//url.txt','r') as f_root_url:zhu_ti_names = f_root_url.readlines()for zhu_ti_item in zhu_ti_names:print("正在处理"+zhu_ti_item.strip()+'_文件夹下的内容')zhu_ti_name = split_(zhu_ti_item)[0]#提取主题名try:with open('F://ppt//'+zhu_ti_name+'//url.txt','r') as f:lei_bie_names = f.readlines()for lei_bie_item in lei_bie_names:print("   正在解压"+lei_bie_item.strip()+"_类别下的压缩文件")lei_bie_name = judgeName(split_(lei_bie_item)[0])extract_file = 'F://ppt//'+zhu_ti_name+'//'+lei_bie_name+'//'#压缩文件所在位置archive_extract(extract_file, zhu_ti_name, lei_bie_name)except:with open('F://ppt//'+zhu_ti_name+'//url.txt','r',encoding='utf-8') as f:lei_bie_names = f.readlines()for lei_bie_item in lei_bie_names:print("   正在解压"+lei_bie_item.strip()+"_类别下的压缩文件")lei_bie_name = judgeName(split_(lei_bie_item)[0])extract_file = 'F://ppt//'+zhu_ti_name+'//'+lei_bie_name+'//'#压缩文件所在位置archive_extract(extract_file, zhu_ti_name, lei_bie_name)if __name__ =="__main__":main()

这部分代码的注释较详细,大家可以看下,细节性的问题比较多,不再一一啰嗦了。我将文件批量解压到f盘下的PPT1文件下,运行程序之后效果如下:



结束语

到这里,这个网站的PPT按照这样方法基本被我们爬下来了。从这样的网站爬取内容,虽然难度上不是很大,由于网络的原因、网页本身结构的原因,在程序运行的过程中会遇到很多问题,要根据问题能够修改代码使其稳健运行。这些ppt足以满足平时的使用,演示的时候我只做了两个主题中的部分栏目,其他的以后有时间再自己爬下来。

如果有什么问题欢迎留言交流,喜欢本篇文章记得关注我哦。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_899873.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

利用Python爬取妙笔阁小说网站的小说信息并保存为txt和csv格式

本次爬取的是妙笔阁小说网仙侠系列中所有小说的信息&#xff0c;打开网页会看到如下图所示的小说列表。 根据列表&#xff0c;选择爬取小说的书名、作者、最新更新、简介这四项信息。 在爬取之前&#xff0c;为了防止网站禁止爬取&#xff0c;需构造访问的请求头&#xff0…

仿360网站广告实现换肤特效

1、新建一个web项目&#xff0c;index.jsp同级目录下放jquery插件和top_right.png图片 2、index.jsp页面代码 <% page language"java" import"java.util.*" pageEncoding"utf-8"%> <% String path request.getContextPath(); String b…

仿360小说网站的源码设计实现

360首页检索小说效果如下&#xff1a; 个人完成编写的schoolnet校园网主页如下 在小说模块中&#xff0c;包括&#xff1a;小说类别编号&#xff1a;a、校园爱情 b、动漫同人 c、校园魔法 d、轻小说 e、校园励志 f、校园修真 g、名人传记 h、古典小说 …

基于仿360小说网站(校园网)的源码设计实现(升级版)

基于博文仿360小说网站的源码设计实现对小说网站的源码更新升级&#xff08;动漫小说网&#xff09;。 网站PC电脑端效果截图&#xff1a; APP手机端效果截图&#xff1a; 数据库相关表设计&#xff1a; 主要包含小说id,章节id,类型ID,小说名称,章节名称,作者,缩略图,图片地址…

动漫网站源码设计与实现

已完成编写的Sky动漫网主页如下 PC电脑端效果截图&#xff1a; APP手机端效果截图&#xff1a; 数据库相关表设计如下&#xff1a; 主要有&#xff1a;动漫主体信息表、视频播放源表、文章资讯表、主题专辑表、经典语录表、图片图集表、评论表等等 信息采集使用jsoup爬取 各…

第二次作业------仿制网站

码云链接&#xff1a;https://gitee.com/eiumc123/12.git 百度云链接&#xff1a;链接&#xff1a;https://pan.baidu.com/s/1ej-JvlRfRYe8KzGje-ULOQ 提取码&#xff1a;fnmv &#xff08;文件中有视频&#xff0c;过大无法上传到码云&#xff0c;所以。。。&#xff09; <…

怎么在树莓派上搭建web网站,并发布到外网可访问?

系列文章 怎么在树莓派上搭建web网站&#xff0c;并发布到外网可访问&#xff1f;怎么在树莓派上搭建WordPress博客网站&#xff0c;并发布到外网可访问&#xff1f;如何为树莓派上的WordPress博客网站配置自己的域名&#xff0c;并且外网可访问&#xff1f;如何在局域网外SSH…

怎么在树莓派上搭建WordPress博客网站,并发布到外网可访问?

系列文章 怎么在树莓派上搭建web网站&#xff0c;并发布到外网可访问&#xff1f;怎么在树莓派上搭建WordPress博客网站&#xff0c;并发布到外网可访问&#xff1f;如何为树莓派上的WordPress博客网站配置自己的域名&#xff0c;并且外网可访问&#xff1f;如何在局域网外SSH…

如何为树莓派上的WordPress博客网站配置自己的域名,并且外网可访问?

系列文章 怎么在树莓派上搭建web网站&#xff0c;并发布到外网可访问&#xff1f;怎么在树莓派上搭建WordPress博客网站&#xff0c;并发布到外网可访问&#xff1f;如何为树莓派上的WordPress博客网站配置自己的域名&#xff0c;并且外网可访问&#xff1f;如何在局域网外SSH…

如何在树莓派上搭建网站,并发布上线(1)

系列文章 如何在树莓派上搭建网站&#xff0c;并发布上线&#xff08;1&#xff09;如何在树莓派上搭建网站&#xff0c;并发布上线&#xff08;2&#xff09;如何在树莓派上搭建网站&#xff0c;并发布上线&#xff08;3&#xff09;如何在树莓派上搭建网站&#xff0c;并发布…

如何在树莓派上搭建网站,并发布上线(2)

系列文章 如何在树莓派上搭建网站&#xff0c;并发布上线&#xff08;1&#xff09;如何在树莓派上搭建网站&#xff0c;并发布上线&#xff08;2&#xff09;如何在树莓派上搭建网站&#xff0c;并发布上线&#xff08;3&#xff09;如何在树莓派上搭建网站&#xff0c;并发布…

如何在树莓派上搭建网站,并发布上线(3)

系列文章 如何在树莓派上搭建网站&#xff0c;并发布上线&#xff08;1&#xff09;如何在树莓派上搭建网站&#xff0c;并发布上线&#xff08;2&#xff09;如何在树莓派上搭建网站&#xff0c;并发布上线&#xff08;3&#xff09;如何在树莓派上搭建网站&#xff0c;并发布…

如何在树莓派上搭建网站,并发布上线(4)

系列文章 如何在树莓派上搭建网站&#xff0c;并发布上线&#xff08;1&#xff09;如何在树莓派上搭建网站&#xff0c;并发布上线&#xff08;2&#xff09;如何在树莓派上搭建网站&#xff0c;并发布上线&#xff08;3&#xff09;如何在树莓派上搭建网站&#xff0c;并发布…

如何在树莓派上搭建WordPress网站 3-5

系列文章 如何在树莓派上搭建网站&#xff0c;并发布上线&#xff08;1&#xff09;如何在树莓派上搭建网站&#xff0c;并发布上线&#xff08;2&#xff09;如何在树莓派上搭建网站&#xff0c;并发布上线&#xff08;3&#xff09;如何在树莓派上搭建网站&#xff0c;并发布…

如何在树莓派上搭建WordPress网站 4-5

系列文章 如何在树莓派上搭建网站&#xff0c;并发布上线&#xff08;1&#xff09;如何在树莓派上搭建网站&#xff0c;并发布上线&#xff08;2&#xff09;如何在树莓派上搭建网站&#xff0c;并发布上线&#xff08;3&#xff09;如何在树莓派上搭建网站&#xff0c;并发布…

如何在树莓派上搭建WordPress网站 5-5

系列文章 如何在树莓派上搭建网站&#xff0c;并发布上线&#xff08;1&#xff09;如何在树莓派上搭建网站&#xff0c;并发布上线&#xff08;2&#xff09;如何在树莓派上搭建网站&#xff0c;并发布上线&#xff08;3&#xff09;如何在树莓派上搭建网站&#xff0c;并发布…

如何为搭建的网站配置自己的域名 1-2

系列文章 如何为搭建的网站配置自己的域名 1-2如何为搭建的网站配置自己的域名 2-2cpolar内网穿透如何配置自定义域名访问 在之前的系列文章中&#xff0c;我们向大家介绍了如何在本地树莓派上搭建属于自己的网站&#xff0c;并让这个网站能被公众互联网的用户安全访问。虽然这…

如何为搭建的网站配置自己的域名 2-2

系列文章 如何为搭建的网站配置自己的域名 1-2如何为搭建的网站配置自己的域名 2-2cpolar内网穿透如何配置自定义域名访问 上一篇&#xff1a; 如何为搭建的网站配置自己的域名 1-2 在上一篇文章中&#xff0c;我们通过在服务器上设置新的域名&#xff0c;并将新域名的指向引导…

如何在Ubuntu上搭建WordPress网站,并公网可访问 1-17

系列文章 如何在Ubuntu上搭建WordPress网站&#xff0c;并公网可访问 1-17如何在Ubuntu上搭建WordPress网站&#xff0c;并公网可访问 2-17如何在Ubuntu上搭建WordPress网站&#xff0c;并公网可访问 3-17如何在Ubuntu上搭建WordPress网站&#xff0c;并公网可访问 4-17如何在…

如何在Ubuntu上搭建WordPress网站,并公网可访问 2-17

系列文章 如何在Ubuntu上搭建WordPress网站&#xff0c;并公网可访问 1-17如何在Ubuntu上搭建WordPress网站&#xff0c;并公网可访问 2-17如何在Ubuntu上搭建WordPress网站&#xff0c;并公网可访问 3-17如何在Ubuntu上搭建WordPress网站&#xff0c;并公网可访问 4-17如何在…