python获取火狐浏览器的历史记录

huavhuahua 2020-03-03

python获取火狐浏览器的历史记录

最新在学习python,所以想着做一些练手的项目,这里做一个获取火狐浏览器的历史记录,然后保存到一个txt文件中。这里涉及到的库:

  • os
  • sqlite3
  • time

os库用来搜索文件,sqlite3用来读取sqlite文件,time用来转换时间戳使用。

火狐的历史记录是使用sqlite来保存的,Python内置sqlite3库,所以并不需要安装任何第三方库。

首先是查找火狐浏览器places.sqlite历史记录文件,这里使用了os.walk()函数来查找,但效率较低,先用着吧。

def search(path, name):
    searchfiles = []
    for root, dirs, files in os.walk(path): #使用os.walk()函数来搜索指定文件,但效率很低
        if name in files:
            searchfiles.append(os.path.join(root, name))
    return searchfiles

然后是使用sqlite3来读取数据:

def gettitles(filename):
    conn = sqlite3.connect(filename) #连接sqlite
    c = conn.cursor()
    print("打开文件:%s 是成功的!" % filename)
    cursor = c.execute("Select url,title,visit_count,frecency,last_visit_date from moz_places") #SQL查找表数据
    titles = set()
    for row in cursor: #遍历行
        if row[1]:
            lasttime = ""
            if row[4]: #如果有时间戳就转换时间
                v = int(row[4]) / 1000000
                lasttime = time.asctime(time.localtime(v))
            titles.add((row[0], row[1],row[2], row[3], lasttime))
    conn.close() #关闭文件
    return titles

然后就是讲读取到的内容保存到一个文件中,全部代码如下:

import os
import sqlite3
import time

def search(path, name):
    searchfiles = []
    for root, dirs, files in os.walk(path): #使用os.walk()函数来搜索指定文件,但效率很低
        if name in files:
            searchfiles.append(os.path.join(root, name))
    return searchfiles


def gettitles(filename):
    conn = sqlite3.connect(filename) #连接sqlite
    c = conn.cursor()
    print("打开文件:%s 是成功的!" % filename)
    cursor = c.execute("Select url,title,visit_count,frecency,last_visit_date from moz_places") #SQL查找表数据
    titles = set()
    for row in cursor: #遍历行
        if row[1]:
            lasttime = ""
            if row[4]: #如果有时间戳就转换时间
                v = int(row[4]) / 1000000
                lasttime = time.asctime(time.localtime(v))
            titles.add((row[0], row[1],row[2], row[3], lasttime))
    conn.close() #关闭文件
    return titles

if __name__ == "__main__":
    v = time.time()
    systemdrive = os.getenv("SystemDrive") #获取系统盘,查找系统盘下的places.sqlite文件,这是火狐历史记录的文件
    searchfiles = search(systemdrive, "places.sqlite")
    if len(searchfiles) > 0:
        all = []
        for filename in searchfiles:
            titles = gettitles(filename)
            all.append(titles)
        if len(all) > 0:
            with open("test.txt", "w", encoding= "utf-8") as f: #保存到当前目录下的test.txt文件中吧
                count = 0
                for item in all:
                    for it in item:
                        count +=1
                        f.write(str(it) + "\n") #加换行
    else:
        print("未找到文件")
    print("共用时:%s秒" % str(time.time() - v))

在我的电脑上共用时45+秒(-v-),吐槽我自己~~~

相关推荐