【问题标题】:Python: Getting all Urls from every open Google Chrome TabPython:从每个打开的 Google Chrome 选项卡中获取所有网址
【发布时间】:2018-06-08 07:45:11
【问题描述】:

我需要在不干扰用户的情况下从 python 3 中所有打开的 Google Chrome 选项卡中获取所有 url。我在 Windows 10 上使用 Microsoft Visual Studio Python3

我试过了:

直接用 open(当前选项卡的路径)打开它——因为我没有权限而不起作用——我认为它被锁定是因为 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 打开 -- 不起作用,因为它被锁定了。而且我在任何地方都找不到密码。我试图打开历史记录的 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: 数据库被锁定

使用 selenium 和第 3 方 chrome 扩展将所有 url 复制到剪贴板 - 不起作用,因为这些扩展仅在活动 selenium 窗口中工作。所以我不想复制带有标签的 Windows。

我考虑过破解一个 chrome 扩展,它每 30 秒将 URL 复制到一个临时文件。但我只知道最少的 Javascript,所以这件事让我发疯。

那么有谁知道在 Python 中做到这一点的方法吗?非常感谢任何其他解决方案。

【问题讨论】:

  • 我想不出任何可能的方法可以在 Python 中完成。我什至不知道你是如何用 SQLite 尝试这个的,一种数据库语言......你最好的选择确实是更前端的东西,比如 JavaScript。
  • 如果您能分享您迄今为止使用过的代码,这将很有帮助,以便我们更好地了解您的方法
  • @HamSam 我上传了一些代码,这样你就可以看到我在尝试什么
  • 您是否尝试过以管理员身份运行它?这可能会给您带来与“PermissionError: [Errno 13] Permission denied”不同的错误
  • @tww0003 刚刚检查过这是否有效。我以管理员身份打开 Visual Studio 并运行我的代码,但它仍然给我完全相同的错误。

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


【解决方案1】:

如果你想访问数据库,你应该关闭所有浏览器。

(Source)

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2017-12-01
      • 2018-03-07
      • 1970-01-01
      • 2016-07-30
      • 1970-01-01
      • 1970-01-01
      • 2012-10-06
      • 2017-08-27
      • 2019-05-26
      相关资源
      最近更新 更多