手机UC浏览器导出书签到电脑Chrome浏览器中

前情提要:手机上从塞班开始就使用UC浏览器,那时候的UC浏览器还是相对比较好用的,现在已经变成了满屏低俗营销新闻广告的垃圾软件,终于无法忍受决定转移阵地却发现这个垃圾软件竟然不允许导出书签了,对于这种恶心用户还想提升留存的行为实在是吃相难看,嗤之以鼻。

进入正题:我的需求如题所说,将手机上的UC浏览器上百个书签导出,再导入到电脑端的Chrome浏览器中。研究一番发现电脑端的UC浏览器早已停更几年,找到了最新版安装以后发现,它可以同步手机端的书签,但是依然不允许导出,垃圾!恶心!所幸我们可以在电脑的 C:\Users\ZGR\AppData\Local\UCBrowser\ 路径下找到 Bookmarks 文件,用文本工具打开后发现正是以json格式保存的我的所有书签,核心内容如下所示(为方便查看文件可将该文件后缀改为 .json ):

如此甚好,我们只需要解析这个文件提取出书签目录和地址信息再导入到Chrome中就可以了。接下来我们在Chrome的书签管理器中导出一个书签html来分析它的文件格式,部分内容如下所示:

 简单讲就是目录和链接使用固定的格式嵌套,注意这里要每一行都保留末尾的换行符,否则Chrome会解析不到部分数据,似乎是逐行解析导致的。我们只需要把前文所说的json文件内容解析出来重新组合成Chrome的嵌套格式,再插入到合适的位置保存,就可以重新导入到Chrome中了。这里我使用了Python2.7进行json和html的文本处理,为了尽量不引入额外的库硬编码了部分字符串进行分析处理,完整代码如下所示,将目录和文件名改为自己定义的即可运行,源码已上传:导出手机UC浏览器书签到电脑端Chrome脚本-Python文档类资源-CSDN下载

import json
import re
import sys
reload(sys)
sys.setdefaultencoding('utf8')

#bookmarks file which was found in C:\Users\ZGR\AppData\Local\UCBrowser\
BookmarksMobile = './Bookmarks'

#bookmarks file which was export by Chrome
BookmarksChrome = './bookmarks_chrome.html'

#output file path, the file should be imported in Chrome
OutputPath = './out_chrome.html'

FolderHtmlTag = '''<DT><H3 ADD_DATE="1625195169" LAST_MODIFIED="1632975196">{}</H3>\n'''
FolderListPre = '''<DL><p>\n'''
FolderListSuf = '''</DL><p>\n'''
UrlHtmlTag = '''<DT><A HREF="{}" ADD_DATE="1625195294">{}</A>\n'''

def ParseWriteData(file, data):
    if data['type'] == 'folder':    	
    	file.write(FolderHtmlTag.format(data['name']))
    	file.write(FolderListPre)
    	for child in data['children']:
    	    ParseWriteData(file, child)
    	file.write(FolderListSuf)

    elif data['type'] == 'url':
    	file.write(UrlHtmlTag.format(data['url'],data['name']))

def BuildOutHtml(outfile):
	with open(BookmarksMobile,'r') as fp:
         jsonData = json.load(fp)
         #print('jsonData:',jsonData)
         #bookmarks on mobile
         mobileData = jsonData["roots"]["synced"]
         #print('mobileData:', mobileData)
    	 ParseWriteData(outfile,mobileData)


#bookmarks on mobile
with open(BookmarksChrome,'r') as fp:
    htmlData = fp.read()
    #print('htmlData:',htmlData)
    tail = re.search("[\n\s\t]*</DL><p>[\n\s\t]*</DL><p>[\n\s\t]*$", htmlData)
    #span() return start position and end position
    #group() return matched substring
    #print('tail', tail.span(), tail.group())
    preStrEndPos = tail.span()[0]
    strPre = htmlData[0:preStrEndPos] + '\n'
    strTail = htmlData[preStrEndPos:] + '\n'
    #print('strTail', strTail)
    with open(OutputPath,'w') as outfile:
    	outfile.write(strPre)
        BuildOutHtml(outfile)
        outfile.write(strTail)
        print(OutputPath + ' finished.')

我的文件目录结构如下所示,其中out_chrome.html文件为最终的完整书签页

 

在Chrome中导入生成的html文件后有些书签重复了,简单拖拽调整后效果如下:

 

至此大功告成,卸载UC,造福百姓!!!

 

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

逍遥游侠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值