python 解析 google Chrome 浏览器历史浏览记录以及收藏夹数据

前言

常使用chrome浏览器作为自己的默认浏览器,也喜欢使用浏览器来收藏自己的喜欢的有用的链接,自己也做了一个记录笔记的小脚本,想扩展收录chrome浏览器收藏夹的内容,,下面,,使用python提取chrome浏览器的历史记录,以及收藏夹。

(一)查询chrome数据缓存地址

1.打开 chrome浏览器,输入 chrome://version,进入浏览器版本信息页面

2.复制页面下图,划线地址

请添加图片描述

(二)提取收藏夹数据

1.文件路径

上面我的chrome浏览器的缓存路径是:
C:\Users\Administrator\AppData\Local\Google\Chrome\User Data\Default
浏览器的收藏夹的数据,记录在Bookmarks文件里面
Bookmark文件的内容格式是json
请添加图片描述

2.解析代码

解析代码为

import os
import json
#chrome data path
path = "C:/Users/Administrator/AppData/Local/Google/Chrome/User Data/Default"
#chrome browser bookmark
class BookMark:
    
    def __init__(self,chromePath=path):
        #chromepath
        self.chromePath = chromePath
        #parse bookmarks
        with open(os.path.join(path,'Bookmarks'),encoding='utf-8') as f:
            bookmarks = json.loads(f.read())
        self.bookmarks = bookmarks
        #folders
        self.folders = self.get_folders()
        
    def get_folders(self):
        #folders
        names = [
            (i,self.bookmarks['roots'][i]['name']) 
            for i in self.bookmarks['roots']
                 ]
        return names
    
    def get_folder_data(self,folder=0):
        return self.bookmarks['roots'][self.folders[folder][0]]['children']
        
    def set_chrome_path(self,chromePath):
        self.chromePath = chromePath
        
    def refresh(self):
        'update chrome data from chrome path'
        #parse bookmarks
        with open(os.path.join(path,'Bookmarks'),encoding='utf-8') as f:
            bookmarks = json.loads(f.read())
        self.bookmarks = bookmarks

(三)查看浏览历史数据

1.文件路径

历史数据,存储在下面的History文件里面,内容格式是sqlite的数据库文件,可以直接使用sqlite3来解析,当然也可以使用DB Browser for SQLite来图形化界面显示History sqlite数据文件。
请添加图片描述

2.解析代码

import os
import sqlite3

#chrome data path
path = "C:/Users/Administrator/AppData/Local/Google/Chrome/User Data/Default"

#History
class History:
    def __init__(self,chromePath=path):
        self.chromePath = chromePath
        
    def connect(self):
        self.conn = sqlite3.connect(os.path.join(self.chromePath,"History"))
        self.cousor = self.conn.cursor()
        
    def close(self):
        self.conn.close()
        
    def get_history(self):
        cursor = self.conn.execute("SELECT id,url,title,visit_count  from urls")
        rows = []
        for _id,url,title,visit_count in cursor:
            row = {}
            row['id'] = _id
            row['url'] = url
            row['title'] = title
            row['visit_count'] = visit_count
            rows.append(row)
        return rows

(四)完整代码&测试代码

import os
import sqlite3
import json

#https://editor.csdn.net/md?articleId=122820285
#chrome data path
path = "C:/Users/Administrator/AppData/Local/Google/Chrome/User Data/Default"

#chrome browser bookmark
class BookMark:
    
    def __init__(self,chromePath=path):
        #chromepath
        self.chromePath = chromePath
        #refresh bookmarks
        self.refresh()
        #folders
        self.folders = self.get_folders()
        
    def get_folders(self):
        #folders
        names = [
            (i,self.bookmarks['roots'][i]['name']) 
            for i in self.bookmarks['roots']
                 ]
        return names
    
    def get_folder_data(self,folder=0):
        return self.bookmarks['roots'][self.folders[folder][0]]['children']
        
    def set_chrome_path(self,chromePath):
        self.chromePath = chromePath
        self.refresh()
        
    def refresh(self):
        'update chrome data from chrome path'
        #parse bookmarks
        assert os.path.exists(os.path.join(path,'Bookmarks')),"can't found ‘Bookmarks’ file,or path isn't a chrome browser cache path!"
        with open(os.path.join(path,'Bookmarks'),encoding='utf-8') as f:
            bookmarks = json.loads(f.read())
        self.bookmarks = bookmarks
   

#History
class History:
    def __init__(self,chromePath=path):
        self.chromePath = chromePath
        self.connect()
        
    def connect(self):
        assert os.path.exists(os.path.join(path,'History')),"can't found ‘History’ file,or path isn't a chrome browser cache path!"
        self.conn = sqlite3.connect(os.path.join(self.chromePath,"History"))
        self.cousor = self.conn.cursor()
        
    def close(self):
        self.conn.close()
        
    def set_chrome_path(self,chromePath):
        self.close()
        self.chromePath = chromePath
        self.connect()
        
    
    def get_history(self):
        cursor = self.conn.execute("SELECT id,url,title,visit_count  from urls")
        rows = []
        for _id,url,title,visit_count in cursor:
            row = {}
            row['id'] = _id
            row['url'] = url
            row['title'] = title
            row['visit_count'] = visit_count
            rows.append(row)
        return rows

        
if __name__ == "__main__":
    #bookmark 测试
    #传入chrome browser浏览器缓存路径
    book = BookMark(path)
    #获取所有文件夹信息
    names = book.get_folders()
    print(names)
    #获取第一个文件夹记录
    items = book.get_folder_data(0)
    print(items[-1]) #输出最后一个记录
    #从浏览器缓存文件夹中,更新文件夹记录
    book.refresh()
    #重新设置浏览器路径
    book.set_chrome_path(path)
    
    #History 测试
    history = History(path)       #初始化History,会自动连接数据库
    items = history.get_history() #获取浏览记录,当浏览器开启时,会报database lock错误
    print(items[-1])              #输出最后一个记录
    history.set_chrome_path(path) #重新设置浏览器路径
    
  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值