我需要从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中这样做的方法吗?非常感谢任何其他解决方案。
答案 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。