chrome 扩展体验

对应的 chrome 扩展已上线 Chrome 应用商店,体验地址如下,求个好评

https://chrome.google.com/webstore/detail/bookmarktree/obhnldggnjdmbmidjkjjnlclooehbngf?hl=zh-CN

今天推送一篇极其实用的可视化教程,可视化我们自己的浏览器中收藏的书签。

事情是这样的,昨天我在找一个收藏夹中的书签时

由于层级过深,无法直接触达,学代码写程序就是为了解决这些小问题,我灵感一现,可不可以浏览器书签层次可视化出来,直接点击呢?说干就干,花了几个小时,完成了下面这个 mini-project。

按照收藏夹中书签的层次顺序,由根节点延申到叶子节点,每个叶子节点就是一个书签,可以直接点击叶子节点到达对应的书签地址。

代码全部开源,地址如下,求狠狠的 star

https://github.com/inspurer/ChromeBookmarkVisual

可以复制在浏览器中打开,也可以直接点击文末的阅读原文直达。

核心代码

导出浏览器书签格式如下

需要使用 lxml 将它解析成 json,然后扔给 echarts 做可视化。

在 lxml 解析过程中发现,由于导出的 html 中许多 DT、H3 标签没有闭合,导致解析紊乱,故先将 html 内容规范化处理之。

def get_regular_html():with open(bookmark_html_file, mode='r', encoding='utf-8-sig') as fp:html_content = fp.read()'''先规则 html 标签,否则 etree.HTML 解析的结构很混乱'''html_content = html_content.replace(r'<p>', '')html_content = html_content.replace(r'</H3>', r'</H3></DT>')html_content = html_content.replace(r'</A>', r'</A></DT>')return html_content

然后使用递归法解析 lxml 成 json

def parse_html_recursive(root_html):children = []children_html = root_html.xpath('./child::*')for index, ele in enumerate(children_html):tag_name = ele.tag.strip()if tag_name == 'dt':if ele.xpath('./h3'):name = ele.xpath('./h3/text()')[0].strip()if name in exclude_collection:continuechildren.append({name_key: name,children_key: parse_html_recursive(children_html[index + 1])})elif ele.xpath('./a'):if len(ele.xpath('./a/text()')) == 0:print('过滤掉没有书签名的')continueurl = ele.xpath('./a/@href')[0]name = ele.xpath('./a/text()')[0].strip()children.append({name_key: name,url_key: url})return children

json 格式大致如下:

最后 echart 可视化 json 内容,这部分代码全在 tree-radial.html 中,在此就不展开了。

运行步骤

  1. git clone git@github.com:inspurer/ChromeBookmarkVisual.git

  2. pip install requirements.txt

  3. 在浏览器中将收藏的书签导出为 html,命名为 bookmarks.html

  4. 运行 parse_bookmark_html_to_json.py 得到 bookmarks.json

  5. 在浏览器中打开 tree-radial.html,即可看到可视化效果,并可点击叶子节点

个性配置

  1. 可在 parse_bookmark_html_to_json.py 文件中 exclude_collection 变量中添加不需要可视化的根书签收藏夹。
  2. 可在 tree-radial.htmlmyChart.setOption 设置图表样式,如 layout = orthogonal 可设置成层次树状图,
    initialTreeDepth 可以设置初始最大层数。

可以参考下面的 B 站视频,查看浏览器书签导出等步骤,不要忘了一键三连~。

https://www.bilibili.com/video/BV1JY411p7f2/

参考

使用ECharts绘制网址径向树状图:https://www.cnblogs.com/rustfisher/p/15219690.html

ps,如果大家看教程看得很晕,直接看运行步骤即可,不明白的地方可以借鉴 B 站视频。

【开源】浏览器书签层级可视化相关推荐

  1. xml显示浏览器标签_浅析浏览器书签的导入和导出

    浏览器有个实用的功能,但是可能用的频率不高,就是书签/收藏的导入和导出,因为现在一般浏览器都有云同步功能,所以这个功能存在感不强. 浏览器书签是可以跨不同的浏览器导入的,所以意味着导出的文件肯定是有一 ...

  2. 火狐浏览器书签(收藏夹)全部消失,历史记录也消失,如何恢复

    火狐浏览器书签(收藏夹)全部消失,历史记录也消失,如何恢复_weixin_34297300的博客-CSDN博客

  3. Android之实现夸克浏览器书签和历史页面滑动时候右上角图标切换效果

    1 需求 实现夸克浏览器书签和历史页面滑动时候右上角图标切换效果,页面滑动的时候,图标也左右滑动,但是只是显示其中的一个 https://www.captainai.net/st/ 2 代码实现 xm ...

  4. Grafana 使用教程 --- 开源的度量分析与可视化套件

    原文链接:https://blog.csdn.net/bbwangj/article/details/81109615 Grafana是一个开源的度量分析与可视化套件.经常被用作基础设施的时间序列数据 ...

  5. 谷歌浏览器书签栏怎么隐藏 谷歌Chrome浏览器书签栏隐藏教程

    打开谷歌Chrome浏览器,进入设置页面; 谷歌浏览器书签栏怎么隐藏?谷歌Chrome浏览器书签栏隐藏教程 谷歌浏览器书签栏怎么隐藏?谷歌Chrome浏览器书签栏隐藏教程 待设置页面弹出后,滑动找寻& ...

  6. 将Windows电脑上的浏览器书签同步至iPad中的Safari

    Windows电脑上的浏览器书签同步至iPad中的Safari 当我们的电脑用的是Windows系统,同时有iPad时,有时会希望能够将电脑浏览器中的书签同步到iPad上,这样就会比较方便,那么接下来 ...

  7. Chrome 浏览器书签功能很强大

       Chrome 浏览器书签功能很强大,书签功能其实就是收藏夹.点击扳手-书签-显示书签,即可在浏览器顶部显示书签.一个网站如果要加入书签,直接在点击浏览器地址栏右侧的五角星即可.    更强大的是 ...

  8. android获取网页标题,android获取系统自带浏览器书签

    刚刚接手一个备份系统浏览器书签的模块,现在把代码贴出来,另外有几点疑问请路过的大神指教 1.根据官方api应该是有以下几个字段是可以获取的 但是除了TITLE和URL能获取其他的都会报java.lan ...

  9. 使用码云同步谷歌 Chrome 浏览器书签

    由于东方的神秘力量,国内正常情况下是连不上 Google 账号的,所以平时使用 Chrome 经常会头疼书签同步问题.由于魔法力量的不稳定,有时候不同步,有时还会同步错乱导致书签丢失. 针对这个问题, ...

  10. 火狐浏览器书签工具栏图标_在Firefox书签工具栏中浓缩书签

    火狐浏览器书签工具栏图标 Do you have a lot of bookmarks and bookmarks folders in your Bookmarks Toolbar and need ...

最新文章

  1. C++ error:LNK2005 已经在*.obj中定义
  2. linux 下mysql安装配置管理以及优化
  3. 【python 5】正则表达式
  4. 二叉搜索树的插入与删除(C语言)
  5. Java Spring 后端项目搭建
  6. 特斯拉副总裁陶琳:在中国采集的数据都将存在中国
  7. html点线面制作,利用HTML5绘制点线面组成的3D图形的示例_html5教程技巧
  8. arduino动态刷新显示_2019 台北电脑展:华硕显示器产品精锐尽出
  9. 使用火狐解决网站图片不能复制下载的问题
  10. 蓝字冲销是什么意思_会计做帐中用红字和蓝字代表的意思是什么
  11. 【千律】OpenCV基础:图像边缘检测 -- Laplacian 算子和 LoG 算子
  12. java读取Excel文件并各方案对比
  13. 高级转录组分析和R数据可视化火热报名中(2022.10)
  14. 百度无线音乐盒刷打印服务器,百度无线音乐盒引关注 让普通音箱秒变Wi-Fi音箱...
  15. 【解决方案】Error response from daemon: Conflict. The container name /mongo is already in use by contain
  16. 学测绘和计算机,测绘工程就业方向与前景 女生学测绘好找工作吗
  17. 大数据开发和大数据分析的区别?
  18. CSS如何使用伪元素选择器给所有的div里的文本前面添加小写罗马数字编号
  19. 安卓禁止用户安装程序
  20. 用matlab跳动的心,[ 教程 ] 用Arduino制作一个跳动的心

热门文章

  1. 使用FPGA进行加速运算
  2. 国家计算机网络设施英文简称,中国教育和科研计算机网的英文简称是
  3. 海外版华为手机安装谷歌框架(也适用于国内任意机型)
  4. 眨眼视频制作与生成活体视频生成
  5. P、NP、NPC和NP-Hard相关概念的图形和解释
  6. 基于SSM小说阅读网站设计带爬虫功能
  7. 计算机睡眠状态网络是断开的吗,电脑进入睡眠模式会自动断网如何解决
  8. wo-27s管理员账户和密码_获取电信天翼网关超级密码,修改路由模式为桥接模式...
  9. 深度学习入门笔记(二十一):经典神经网络(残差网络ResNets)
  10. wpa_supplicant配置