900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > 手机UC浏览器导出书签到电脑Chrome浏览器中

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

时间:2021-02-14 05:14:17

相关推荐

手机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 jsonimport reimport sysreload(sys)sys.setdefaultencoding('utf8')#bookmarks file which was found in C:\Users\ZGR\AppData\Local\UCBrowser\BookmarksMobile = './Bookmarks'#bookmarks file which was export by ChromeBookmarksChrome = './bookmarks_chrome.html'#output file path, the file should be imported in ChromeOutputPath = './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 mobilemobileData = jsonData["roots"]["synced"]#print('mobileData:', mobileData)ParseWriteData(outfile,mobileData)#bookmarks on mobilewith 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,造福百姓!!!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。