使用Python解析Chrome浏览器书签的示例


Posted in Python onNovember 13, 2020

Chrome 浏览器的书签如果可以导出,并转换为我们需要的格式时,我们就可以编写各种插件来配合书签的使用。

答案显然是可以的,接下来我们以 Python 为例写一个遍历打印书签的例子

书签地址

先来说下获取书签的方法

Chrome 浏览器的书签存放位置在各个平台的区别

  • Mac
~/Library/Application Support/Google/Chrome/Default/Bookmarks
  • Linux
~/.config/google-chrome/Default/Bookmarks
  • Windows
%LOCALAPPDATA%"\Google\Chrome\User Data\Default\Bookmarks"

书签结构

书签内容为 JSON 格式,结构如下

{
  "checksum":"b196f618a9166d56dc6c98cfe9a98d45",
  "roots":{
    "bookmark_bar":{
      "children":[
        {
          "date_added":"13246172853099058",
          "guid":"83431411-157f-45f8-a9a4-d9af26c71bce",
          "id":"1944",
          "name":"blog local 温欣爸比的博客",
          "type":"url",
          "url":"http://localhost:4000/"
        },
        {
          "children":[
            {
              "date_added":"13246172853099058",
              "guid":"83431411-157f-45f8-a9a4-d9af26c71bce",
              "id":"1944",
              "name":"blog local 温欣爸比的博客",
              "type":"url",
              "url":"http://localhost:4000/"
            }
          ],
          "date_added":"13246172844427649",
          "date_modified":"13246172865895702",
          "guid":"6aa4ecce-a220-4689-9239-7df10965748b",
          "id":"1943",
          "name":"Blog",
          "type":"folder"
        }
      ],
      "date_added":"13242060909278534",
      "date_modified":"13246172853099058",
      "guid":"00000000-0000-4000-a000-000000000002",
      "id":"1",
      "name":"书签栏",
      "type":"folder"
    },
    "other":{
      "children":[

      ],
      "date_added":"13242060909278616",
      "date_modified":"0",
      "guid":"00000000-0000-4000-a000-000000000003",
      "id":"2",
      "name":"其他书签",
      "type":"folder"
    },
    "synced":{
      "children":[

      ],
      "date_added":"13242060909278621",
      "date_modified":"0",
      "guid":"00000000-0000-4000-a000-000000000004",
      "id":"3",
      "name":"移动设备书签",
      "type":"folder"
    }
  },
  "sync_metadata":"",
  "version":1
}

清晰了这个结构在写代码就很简单了,以书签栏为例,只需要将 data['roots']['bookmark_bar']['children'] 进行循环遍历即可,代码详情可见 demo

完整demo

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Author: wxnacy(wxnacy@gmail.com)
# Description: 打印不换行进度条
# 预览 https://raw.githubusercontent.com/wxnacy/image/master/blog/python_progress.gif

import time


def get_progress(progress, total):
  '''获取进度条'''
  progress_ratio = progress / total
  progress_len = 20
  progress_num = int(progress_ratio * 20)
  pro_text = '[{:-<20s}] {:.2f}% {} / {}'.format(
    '=' * progress_num, progress_ratio * 100, progress, total)
  return pro_text

def print_progress(total):
  '''模拟打印进度条'''
  progress = 0
  step = 30
  while progress < total:
    time.sleep(1)
    b = progress
    e = b + step
    progress += step
    end = '\r'
    if progress >= total:
      end = '\n'
      progress = total
    print(get_progress(progress, total), end = end)

if __name__ == "__main__":
  print_progress(100)

以上就是使用Python解析Chrome浏览器书签的示例的详细内容,更多关于Python解析Chrome浏览器书签的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
详解Python中for循环的使用
Apr 14 Python
浅谈python中np.array的shape( ,)与( ,1)的区别
Jun 04 Python
浅谈Tensorflow由于版本问题出现的几种错误及解决方法
Jun 13 Python
python os.path模块常用方法实例详解
Sep 16 Python
Python解决两个整数相除只得到整数部分的实例
Nov 10 Python
python自制包并用pip免提交到pypi仅安装到本机【推荐】
Jun 03 Python
python pip安装包出现:Failed building wheel for xxx错误的解决
Dec 25 Python
Python跑循环时内存泄露的解决方法
Jan 13 Python
django实现更改数据库某个字段以及字段段内数据
Mar 31 Python
Python中使用socks5设置全局代理的方法示例
Apr 15 Python
Pycharm 解决自动格式化冲突的设置操作
Jan 15 Python
Python 读写 Matlab Mat 格式数据的操作
May 19 Python
python 实现围棋游戏(纯tkinter gui)
Nov 13 #Python
python3从网络摄像机解析mjpeg http流的示例
Nov 13 #Python
python+flask编写一个简单的登录接口
Nov 13 #Python
jupyter notebook快速入门及使用详解
Nov 13 #Python
Python中pass的作用与使用教程
Nov 13 #Python
python入门教程之基本算术运算符
Nov 13 #Python
python“静态”变量、实例变量与本地变量的声明示例
Nov 13 #Python
You might like
php+dbfile开发小型留言本
2006/10/09 PHP
利用PHP制作简单的内容采集器的代码
2007/11/28 PHP
apache中为php 设置虚拟目录
2014/12/17 PHP
PHP处理postfix邮件内容的方法
2015/06/16 PHP
Ajax中的JSON格式与php传输过程全面解析
2017/11/14 PHP
php递归函数怎么用才有效
2018/02/24 PHP
php源码的安装方法和实例
2019/09/26 PHP
浅析javascript闭包 实例分析
2010/12/25 Javascript
window.navigate 与 window.location.href 的使用区别介绍
2013/09/21 Javascript
在js文件中写el表达式取不到值的原因及解决方法
2013/12/23 Javascript
js定时器(执行一次、重复执行)
2014/03/07 Javascript
在JS数组特定索引处指定位置插入元素
2014/07/27 Javascript
基于Turn.js 实现翻书效果实例解析
2016/06/20 Javascript
基于js实现checkbox批量选中操作
2016/11/22 Javascript
JavaScript实现简单图片轮播效果
2017/08/21 Javascript
Javascript网页抢红包外挂实现分享
2018/01/11 Javascript
Vue cli+mui 区域滚动的实例代码
2018/01/25 Javascript
详解vue-router导航守卫
2019/01/19 Javascript
jQuery操作元素追加内容示例
2020/01/10 jQuery
小程序中的箭头函数的具体使用
2020/06/19 Javascript
解决vue prop传值default属性如何使用,为何不生效的问题
2020/09/21 Javascript
nuxt引入组件和公共样式的操作
2020/11/05 Javascript
[02:36]DOTA2英雄基础教程 帕格纳
2014/01/20 DOTA
Python编程二分法实现冒泡算法+快速排序代码示例
2018/01/15 Python
利用Python代码实现数据可视化的5种方法详解
2018/03/25 Python
python实现图片识别汽车功能
2018/11/30 Python
Python+OpenCV实现旋转文本校正方式
2020/01/09 Python
Python读取配置文件(config.ini)以及写入配置文件
2020/04/08 Python
使用keras内置的模型进行图片预测实例
2020/06/17 Python
浅谈HTML5 FileReader分布读取文件以及其方法简介
2017/11/09 HTML / CSS
Zavvi西班牙:电子游戏、极客服装、Blu-ray、Funko Pop等
2019/05/03 全球购物
职业生涯规划书的格式
2013/12/29 职场文书
见习报告格式范文
2014/11/08 职场文书
2015年度个人思想工作总结
2015/04/08 职场文书
Python中threading库实现线程锁与释放锁
2021/05/17 Python
Go 语言中 20 个占位符的整理
2021/10/16 Golang