zoukankan      html  css  js  c++  java
  • python获取火狐浏览器的历史记录

    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) + "
    ") #加换行
        else:
            print("未找到文件")
        print("共用时:%s秒" % str(time.time() - v))
    

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

  • 相关阅读:
    MTputty设置字体 MTputty菜单栏隐藏显示
    Ubuntu安装SSH服务
    LeetCode--Text Justification
    海量数据处理--hash和bit-map
    海量数据处理--bloom filter
    SSH原理简介(转)
    Ubuntu12.04 安装android集成环境(xserver被卸载)
    内存对齐(转)
    Ubuntu12.04 安装(无法将 grub-efi 软件包安装到/target/中,如果没有 GRUB 启动引导期,所安装的系统无法启动)
    算法题--等概率产生0和1(有扩展)
  • 原文地址:https://www.cnblogs.com/zzr-stdio/p/12404920.html
Copyright © 2011-2022 走看看