最近有个项目,是爬取某个网站的商品图片,并为每个商品创建一个文件夹,里面存储着该商品的图片。
但是文件数量太多了,有三千多个,如果我漫无目的地在文件夹里面找,未免就太麻烦了,所以我需要一个excel表格来管理这些文件夹,理想的表格内容应该有以下三列:
商品标题:这个可以在爬虫的时候顺便存储到excel表格中。
商品的网页链接:这个也很好操作,同上,爬虫的时候顺便就完成了。
商品对应的文件夹超链接:理论上这一列和上面两列没有什么不同,也可以在爬数据的同时顺便完成,但是实际上我提出这个需求的时候,已经爬了一大半数据了,所以我的想法是等爬完数据之后,统一进行操作。
首先介绍一下文件夹的结构,在一个大文件夹里面,有很多商品文件夹,以及一个excel文件,我们现在要给excel文件夹添加一个对应商品文件夹的超链接。
大体任务了解之后,我们就开干,整体代码如下:
import os
import pandas as pd
# 读取现有的 Excel 表格
input_file = '目录.xlsx'
output_file = '测试_with_folders.xlsx'
# 读取 Excel 文件
df = pd.read_excel(input_file)
# 创建一个新的列来存储文件夹路径超链接
folder_links = []
for title in df['商品标题']:
# 构建相对路径
folder_path = os.path.join('.', title)
print(f'{title}的文件夹路径是:',folder_path)
# 检查文件夹是否存在
if os.path.exists(folder_path):
# 构建超链接
hyperlink = f'=HYPERLINK("{folder_path}", "{title}")'
else:
hyperlink = "文件夹不存在"
folder_links.append(hyperlink)
# 将超链接列添加到 DataFrame
df['文件夹路径'] = folder_links
# 保存修改后的 Excel 文件
df.to_excel(output_file, index=False)
print(f"修改后的 Excel 文件已保存为 {output_file}")
以上代码,你需要把"目录.xlsx"替换成你自己的excel文件路径。ps:excel中的商品标题要和商品文件夹的名字对应。
在创建超链接时,我们使用的是相对路径,即.\{商品标题}的形式,这样的好处是,当你需要把文件夹发给别人的时候,其他人也能通过点击超链接来跳转到对应的商品文件夹。(最好不要写成绝对路径,因为别人的电脑上不一定有这个路径)
下面展示一下最终的效果:
随便点击一个超链接:
就会跳转到对应的商品文件夹:
暂时写到这里把,有想法的小伙伴们可以在评论区交流。