如何使用Python获取每个打开的Google Chrome标签页的URL?

ql3eal8s  于 12个月前  发布在  Go
关注(0)|答案(3)|浏览(155)

我需要从所有打开的谷歌Chrome标签使用Python 3的所有网址没有干扰用户。我的操作系统是Windows 10,我使用Microsoft Visual Studio Python3。
我尝试了以下方法:
直接使用open(path_to_current_tabs)打开选项卡。这不起作用,因为我没有读取文件的权限。我认为它被锁定了,因为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] Permission denied

使用history SQlite3数据库打开也不起作用,因为它被锁定了。但我找不到密码。我也试过打开URL的历史记录,但这也不起作用。

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: database is locked

使用selenium和第三方Chrome扩展将所有url复制到剪贴板也不起作用,因为这些扩展只在活动的selenium窗口中起作用。所以我想要的标签的链接不会被复制。
我曾考虑过开发一个Chrome扩展,每30秒将url复制到一个临时文件中,但我的JavaScript知识很少,所以这件事快把我逼疯了。
有谁知道如何在Python中做到这一点吗?任何其他解决方案都将非常受欢迎。

sxpgvts3

sxpgvts31#

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

zy1mlcev

zy1mlcev2#

当我们访问任何浏览器的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。

yrefmtwq

yrefmtwq3#

您可以使用windows卷影复制服务来复制锁定的sqlite数据库。然后正常阅读。
https://github.com/sblosser/pyshadowcopy的python模块

相关问题