在Ubuntu中不使用Chrome驱动程序和Selenium的Chrome浏览器自动化

时间:2018-10-07 09:37:41

标签: google-chrome ubuntu browser automation

我目前正在尝试在Ubuntu上自动执行Chrome浏览器(不是Chrome驱动程序),以保存成千上万的页面,而这些站点却以某种方式禁止了该站点。

在Mac OS中,AppScript可以在没有Chrome驱动程序和Selenium的情况下处理Chrome。而且我成功实现了页面下载的自动化。但是,我在Ubuntu中找不到AppScript的替代方案。

因此,我通过参考automate-save-page-as使用键盘自动化工具(xdotool)。它使我可以打开一个页面并将其保存到存储中,但是它太慢,不稳定并且难以理解代码。

在Ubuntu中无需使用Selenium和Chrome驱动程序,是否有任何可行的方式自动执行chrome浏览器?还是有人可以使用xdotool提示同时打开多个页面并将其保存到本地几秒钟?

1 个答案:

答案 0 :(得分:-1)

我实现了此问题的解决方案。选中“ ubuntu_automation_example_multiple.py”。

https://github.com/jonghkim/browser-automation-beyond-firewall

我通过引用automate-save-page-as编写了两个基本的脚本文件,分别是“ save_page_as_multiple_open”和“ save_page_as_multiple_save”。

#-*- coding: utf-8 -*-
import os
import warnings
import time
warnings.filterwarnings('ignore')

def trick_open(url, fname):
    cmd = "./save_page_as_multiple_open '{}' --destination '{}'".format(url, fname)
    os.system(cmd)

def trick_save(url, fname):
    cmd = "./save_page_as_multiple_save '{}' --destination '{}'".format(url, fname)
    os.system(cmd)

if __name__ == "__main__":
    url = 'https://www.example.com'
    cwd = os.getcwd()

    for i in range(5):
        trick_open(url, cwd + "/example{}.html".format(i))

    time.sleep(5)

    for i in reversed(range(5)):
        print("Save Path: ", cwd + "/example{}.html".format(i))
        trick_save(url, cwd + "/example{}.html".format(i))

    cmd = "killall google-chrome"
    os.system(cmd)

在“ save_page_as_multiple_open”中,它使用xdotool打开多个URL。之后,“ save_page_as_mutiple_save”将保存每个页面并以相反的顺序关闭该页面。