显示chrome历史文件的sql数据库

时间:2016-01-17 15:05:46

标签: python google-chrome sqlite pycharm

我试图在单独的窗口中显示我的Chrome历史记录。我没有收到错误但没有显示任何内容。这是我的代码。

import sqlite3
import csv
from datetime import datetime, timedelta

conn = sqlite3.connect('C:\Users\Lewis Collins\AppData\Local\Google\Chrome\User Data\Default\History')
conn.text_factory = str
c = conn.cursor()
output_file = open('chrome_history.csv', 'wb')
csv_writer = csv.writer(output_file)
headers = ('Title', 'Visit Count', 'Date (GMT)')
csv_writer.writerow(headers)
epoch = datetime(1601, 1, 1)
for row in (c.execute('select url, title, visit_count, last_visit_time from urls')):
    row = list(row)
    url_time = epoch + timedelta(microseconds=row[3])
    row[3] = url_time
    csv_writer.writerow(row)

我确实从另一篇文章获得了代码库,我正在尝试为自己的程序扩展它。为什么Pycharm脚本不显示任何表?

1 个答案:

答案 0 :(得分:1)

不清楚您是否希望这些行显示在您的控制台或其他地方,但是现在您已将此设置为通过以下两行写入文件:

output_file = open('chrome_history.csv', 'wb')
csv_writer = csv.writer(output_file)

'chrome_history.csv'指定您正在编写csvs的目标文件。我在本地运行你的代码并且它写入了.csv就好了,所以你可能只需要打开那个csv(它将保存在python脚本所在的目录中。)

如果我误解了并且您希望这些数据出现在您的控制台中并使用csv,则需要导入sys然后将目标指定为'sys.stdout',如下所示:

import sys
...
csv_writer = csv.writer(sys.stdout)

这有点迂回,因为使用'print'可以获得相同的结果而无需创建csv.writer对象。例如:

print(header)
...
for row in (c.execute('select url, title, visit_count, last_visit_time from urls')):
    ...
    print(row)

我最好的猜测是你做得对,但你不知道输出在哪里,因为打印到控制台会非常笨拙。考虑到这一点,我已经调整了你的代码并在最后添加了一些以便随后打开文件(假设你正在使用windows - mac用户还有一些步骤,请看这个链接:{{3} })

import csv
import os
import sqlite3

from datetime import datetime, timedelta


with sqlite3.connect('C:\Users\Lewis Collins\AppData\Local\Google\Chrome\User Data\Default\History') as conn:
    conn.text_factory = str
    c = conn.cursor()
    output_file_path = 'chrome_history.csv'
    with open(output_file_path, 'wb') as output_file:
        csv_writer = csv.writer(output_file, quoting=csv.QUOTE_ALL)
        headers = ['URL', 'Title', 'Visit Count', 'Date (GMT)']
        csv_writer.writerow(headers)
        epoch = datetime(1601, 1, 1)
        for row in (c.execute('select url, title, visit_count, last_visit_time from urls')):
            row = list(row)
            url_time = epoch + timedelta(microseconds=row[3])
            row[3] = url_time
            csv_writer.writerow(row)
os.startfile(output_file_path)

一些注意事项: 添加在'with'中,用于打开连接语句。自动关闭这些连接并提供错误处理。请参阅链接了解详情:http://www.blog.pythonlibrary.org/2010/09/04/python-101-how-to-open-a-file-or-program/

在header变量中添加了一个额外项,因为你在SQL语句中提取了4个项目。

添加了完全引用所有行的'quoting = csv.QUOTE_ALL' - 在查看可能包含空格的网址或网页标题时应该会有所帮助。

希望这有帮助。