本文目录导读:

为有效管理收藏的链接,通常有以下几种分类管理方案,你可以根据使用场景(个人浏览器、笔记软件或自动化脚本)选择合适的方式:
基于浏览器书签的脚本分类(最常用)
如果你需要生成一个可以直接导入浏览器的书签文件(HTML),脚本可以按文件夹结构来分类:
代码示例(Python生成书签HTML):
import os
class BookmarkManager:
def __init__(self):
self.bookmarks = {} # 用字典存储分类与链接
def add_bookmark(self, category, title, url):
if category not in self.bookmarks:
self.bookmarks[category] = []
self.bookmarks[category].append({"title": title, "url": url})
def export_to_html(self, file_path="bookmarks.html"):
with open(file_path, "w", encoding="utf-8") as f:
f.write("<!DOCTYPE NETSCAPE-Bookmark-file-1>\n")
f.write("<META HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html; charset=UTF-8\">\n")
f.write("<TITLE>Bookmarks</TITLE>\n<H1>Bookmarks</H1>\n<DL><p>\n")
for category, links in self.bookmarks.items():
f.write(f" <DT><H3>{category}</H3>\n")
f.write(" <DL><p>\n")
for link in links:
f.write(f' <DT><A HREF="{link["url"]}">{link["title"]}</A>\n')
f.write(" </DL><p>\n")
f.write("</DL><p>\n")
print(f"书签已导出至 {file_path}")
# 使用示例
bm = BookmarkManager()
bm.add_bookmark("编程语言", "Python官网", "https://python.org")
bm.add_bookmark("编程语言", "GitHub", "https://github.com")
bm.add_bookmark("设计资源", "Figma", "https://figma.com")
bm.add_bookmark("新闻", "Hacker News", "https://news.ycombinator.com")
bm.export_to_html()
基于JSON的灵活分类(适合存储和扩展)
将数据存储为结构化JSON,支持无限嵌套分类、标签和备注:
代码示例(JSON分类管理):
import json
class LinkManager:
def __init__(self, file_path="links.json"):
self.file_path = file_path
self.data = self.load() or {"categories": []}
def load(self):
try:
with open(self.file_path, "r", encoding="utf-8") as f:
return json.load(f)
except FileNotFoundError:
return None
def save(self):
with open(self.file_path, "w", encoding="utf-8") as f:
json.dump(self.data, f, ensure_ascii=False, indent=2)
def add_category(self, name, parent=None):
"""添加分类,支持子分类"""
category = {"name": name, "links": [], "subcategories": []}
if parent:
# 示例:按名称查找父分类(实际可用ID替代)
for cat in self.data["categories"]:
if cat["name"] == parent:
cat["subcategories"].append(category)
break
else:
self.data["categories"].append(category)
self.save()
def add_link(self, category_name, title, url, tags=None, note=""):
"""在指定分类下添加链接"""
for cat in self.data["categories"]:
if cat["name"] == category_name:
cat["links"].append({
"title": title,
"url": url,
"tags": tags or [],
"note": note
})
self.save()
return
print(f"分类 '{category_name}' 不存在")
# 使用示例
manager = LinkManager()
manager.add_category("技术", "编程") # 在技术下增加子分类
manager.add_link("技术", "MDN文档", "https://developer.mozilla.org", tags=["web", "文档"])
manager.add_link("技术", "LeetCode", "https://leetcode.com", tags=["算法", "面试"])
manager.add_link("编程", "Python官方", "https://python.org") # 子分类
print(json.dumps(manager.data, ensure_ascii=False, indent=2))
基于标签的自动分类(适合海量链接)
不依赖固定分类,而是通过标签(tags)自动分组,脚本可以实时生成分类视图:
代码示例(根据标签自动分类):
from collections import defaultdict
class TagBasedManager:
def __init__(self):
self.links = []
def add(self, title, url, tags):
self.links.append({"title": title, "url": url, "tags": tags})
def classify_by_tag(self):
"""按标签自动生成分类树"""
categories = defaultdict(list)
for link in self.links:
for tag in link["tags"]:
categories[tag].append(link)
return dict(categories)
def show(self):
result = self.classify_by_tag()
for tag, links in result.items():
print(f"\n【{tag}】({len(links)}个链接)")
for i, link in enumerate(links[:3], 1): # 只显示前3个
print(f" {i}. {link['title']} - {link['url']}")
if len(links) > 3:
print(f" ... 还有{len(links)-3}个")
# 使用示例
manager = TagBasedManager()
manager.add("Python教程", "https://python.org", ["编程", "入门", "Python"])
manager.add("Git命令大全", "https://git-scm.com", ["编程", "工具", "版本控制"])
manager.add("CSS动画库", "https://animate.style", ["前端", "CSS", "动画"])
manager.show()
# 自动输出:编程(2个)、入门(1个)、Python(1个)、工具(1个)...
命令行交互式管理脚本
适合需要随时增删查改的场景:
代码示例(CLI界面,支持子命令):
# 伪代码逻辑(可用Python + click库实现) python link_manager.py add "编程" "Python官网" "https://python.org" python link_manager.py add "技术/前端" "React文档" "https://react.dev" python link_manager.py list # 显示所有分类 python link_manager.py list 编程 # 显示该分类下链接 python link_manager.py search 算法 # 搜索所有包含“算法”标签的链接
选择建议
| 场景 | 推荐方案 |
|---|---|
| 简单导入浏览器书签 | 方案1(生成HTML书签) |
| 需要灵活编辑和备份 | 方案2(JSON结构) |
| 链接数量大、跨领域 | 方案3(标签自动分类) |
| 日常手动管理 | 方案4(命令行交互) |
你可以根据需要组合使用——例如用方案2存储数据,用方案1导出为浏览器书签,用方案3提供搜索功能。