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) + "\n") #加换行
else:
print("未找到文件")
print("共用时:%s秒" % str(time.time() - v))
在我的电脑上共用时45+秒(-v-),吐槽我自己~~~