Python:从每个打开的Google Chrome标签获取所有网址

时间:2017-12-27 17:03:42

标签: python python-3.x google-chrome selenium sqlite

我需要从python 3中的所有打开的Google Chrome标签中获取所有网址,而无需与用户进行交互。我在Windows 10上使用Microsoft Visual Studio Python3

我试过了:

直接打开它(当前标签的路径) - 不起作用,因为我没有权限 - 我认为它被锁定,因为chrome激活地写入它。

Current_Tabs_Source = open(r"C:\Users\Beni\AppData\Local\Google\Chrome\User 
Data\Default\Current Tabs", "r")
Current_Tabs_Raw = Current_Tabs_Source.read()
print(Current_Tabs_Raw) #just for checking 

PermissionError:[Errno 13]权限被拒绝

通过sglite3打开 - 因为锁定而无法正常工作。我无法在任何地方找到密码。我试图打开网址的历史,但它无论如何都不起作用。

import sqlite3
from os import path

data_path = path.expanduser('~') + r"\AppData\Local\Google\Chrome\User 
Data\Default"
files = listdir(data_path)
history_db = path.join(data_path, 'history')

c = sqlite3.connect(history_db)
cursor = c.cursor()
select_statement = "SELECT urls.url, urls.visit_count FROM urls, visits 
WHERE urls.id = visits.url;"
cursor.execute(select_statement)

results = cursor.fetchall()

print(results) #just for checking

sqlite3.OperationalError:数据库被锁定

使用selenium和第三方chrome扩展程序将所有网址复制到剪贴板 - 不起作用,因为这些扩展只能在活动的selenium窗口中使用。所以带有我想要的标签的Windows不会被复制。

我认为将Chrome扩展程序每隔30秒复制到一个临时文件就会被黑客攻击。但我只知道最小的Javascript,所以这件事让我很生气。

所以有人知道在Python中这样做的方法吗?非常感谢任何其他解决方案。

2 个答案:

答案 0 :(得分:1)

如果要访问数据库,则应关闭所有浏览器。

Source

答案 1 :(得分:0)

当我们访问任何浏览器的 SQLite 数据库时,我们必须先关闭该特定浏览器。

此外,这里使用的 SQL 命令将获取所有重复的行。

需要更改`select_statement'

select_statement = "SELECT distinct urls.url, urls.visit_count FROM urls, visits WHERE urls.id = visits.url;"

此外,我们需要添加一个循环来打印 chrome 历史数据库中的所有“url”。

for url, count in results:
    print(url)  # print urls line by line

但是,这将为我们提供 Chrome 浏览器的完整历史记录,但不会提供所有当前打开的标签页所需的 URL。