一直使用谷歌浏览器,因为某些原因登录谷歌账号不方便,所以公司和家里的浏览器上收藏的好多书签也不能同步,以前都是直接导出来,然后自己手动导入同步。 最近打算把所有书签整理下放到自己的blog上维护,blog是用vuepress2搭建的,里面的markdown页面本身也是可以直接写html标签的。原以为直接导出的bookmark。html文件直接粘贴到md中就能用的,还是toyoungtosimple,倒出来的html文件长这样: 和我们正常的html页面不太一样,所有标签名和属性名全部大写了,DT、P标签都没有结束标签,即未严格标签嵌套,直接放到vuepress的md中运行和打包都会报错的。自己手动替换修改 首先想到的当然是看能不能直接简单修改下能解决,直接全局替换和修改下标签确实可以,直接用vscode全局替换下就行:删掉第一个DL标签前面的代码全局删掉所有开始P标签H3和A结束标签末尾加上DT结束标签如果报错:UnexpectedEOFintag。。。删掉报错标签上除了常规属性,如href属性之外的其他属性DL、DT、H3、A标签全部替换成小写,否则build时会报错:TypeError:Invalidvalueusedasweakmapkey借助浏览器解析标签 借助input的file属性可以在浏览器中加载出来bookmark。html的文件File信息,也就跟我们平时实现的上传选择文件功能一样。 File接口继承了Blob的方法和属性,里面有一个text方法,Blob。text()方法返回一个Promise对象,包含blob中的内容,使用UTF8格式编码。和FileReader的readAsText()有点类似,我们可以借助这个方法把文件里面的信息转成文本。 注意File对象中只存在于浏览器环境中,在node环境中米有,不过在node中我们可以直接用fs。readFile来读取文件内容。思路:先通过File对象读取bookmark。html成字符串文本然后再将文本直接借助浏览器的DOM节点的innerHTML渲染成html标签,这一步浏览器会自动帮我们转成节点列表NodeList,也不需要我们自己在额外处理标签未严格嵌套的问题然后就可以直接遍历NodeList来格式化我们想要的数据了,注意书签数据在最外层的dl节点下 注意 生成markdown文件时,超链接的文字内容里带标签的话,vuepressbuild编译时会报错:Compilingwithvite〔vite:vue〕Elementismissingendtag,解决方式将标签的尖括号去掉:wzxhzdk:0nodejs版本大题思路其实和浏览器版本一样,只不过解析dom节点我们需要借助第三方dom库,如htmlparser2系统自动生成的书签json文件Chrome浏览器其实有自动生成的json文件,具体位置:windows系统C:UsersAdministratorAppDataLocalGoogleChromeUserDataDefaultBookmarksmac系统Users{一般是你的电脑账号名}LibraryApplicationSupportGoogleChromeDefaultBookmarks 也可以直接在谷歌浏览器地址栏输入chrome:version,会自动加载出有关谷歌浏览器的各种信息。parsebookmark 解析谷歌浏览器Chrome书签bookmark数据的npm包,同时支持浏览器版和node版,网页版的浏览器中打开网址直接选择导出的标签文件处理就可以了: