从Chrome中获取所有已打开的网站

时间:2017-06-28 03:25:33

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

我在Windows 8.1,Python 3.6上 是否可以在最新版本的Chrome中获取所有当前打开的网站并将网站保存到D:/中的文本文件。
我试过打开文件:

C:\Users\username\AppData\Local\Google\Chrome\User Data\Default\Current Tabs

但是我收到错误,文件在另一个程序中打开。
另外还有另一个名为History的文件,其中包含已打开的网址,但也包含NUL等字符。我尝试在python中读取该文件,但收到了 UndicodeDecodeError (不确定关于这个词)
然后我尝试通过以下代码打开文件:

with open('C:/Users/username/AppData/Local/Google/Chrome/User Data/Default/History',"r+",encoding='latin') as file:
    data = file.read()
    print(data)

它工作了。但是在文本文件中我得到了1或2个网址,缺少网址 也许还有另外一种方式就像导入模块一样 类似的东西:

import chrome
url = chrome.get_url()
print(url)

也许selenium也可以这样做。但我不知道怎么做 也许有另一种方法来读取python中所有链接的文件。

我想要它是它检测到网站被打开,如果 mywebsite.com 打开超过10分钟,它将自动被阻止。系统有自己的文件:

C:\Windows\System32\drivers\etc\hosts

最后会添加以下内容:

127.0.0.1 www.mywebsite.com

该网站将无法再使用。

希望你能帮助我。

1 个答案:

答案 0 :(得分:2)

您可以使用这种方法来存储选项卡数据并对其进行操作:

windows = driver.window_handles

您可以使用上述方法存储窗口。

current_window = driver.current_window_handle

此方法将为您提供正在处理的当前窗口。您可以浏览列表“windows”并检查它是否是 current_window 以在选项卡之间导航。

driver.switch_to.window(windows[5])

此方法将切换到所需的选项卡,但我假设您已经拥有它。

现在你如何存储标签打开后花费的时间? 有两种方法可以做到:

  1. 在内部,通过引用 Pandas 数据框或列表
  2. 读取和写入文件。

首先你需要在脚本中导入'time'库

current_time=time.time()

current_time 是当前时间的 int 表示。这是一个 linux 时间戳。

在上述任一场景中,您都需要这样的结构:

data=[]
for i in range(0,len(windows)):
    data.append([  windows[i] , time.time() ])

这将给出如下结构:

    [[window[0],1234564879],
    [window[1],1234567896],...]

这是你想念的东西:

for i in range(0,len(data)):
   if time.time()-data[i][1] > 600  # If new timestamp minus the old one is bigger than 600 seconds
       driver.switch_to(data[i][0])
       driver.close()

我个人的建议是,您从稳定的 API 服务开始,以获取您想要的任何数据,而不是 selenium。我会推荐 SerpApi 因为我在那里工作。它有多种抓取工具,包括谷歌搜索结果抓取工具,并且为新帐户提供 5000 次免费通话。