Создание безголового экземпляра Chrome в Python

Этот вопрос описывает мой вывод после изучения доступных вариантов создания безгласного экземпляра Chrome в Python и просит подтверждения или ресурсов, которые описывают «лучший способ».

Из того, что я видел, кажется, что самый быстрый способ начать работу с безгласным экземпляром Chrome в приложении Python – использовать CEF ( http://code.google.com/p/chromiumembedded/ ) с CEFPython ( http: //code.google.com/p/cefpython/ ). CEFPython кажется преждевременным, поэтому использование его, скорее всего, означает дальнейшую настройку, прежде чем я смогу загрузить безглавой экземпляр Chrome, который загружает веб-страницы (и необходимые файлы), разрешает завершенную DOM, а затем позволяет запускать произвольное JS против него с Python.

Я пропустил какие-либо другие проекты, которые более зрелые или облегчат мне это?

    По какой причине вы не рассматривали Selenium с драйвером Chrome?

    http://code.google.com/p/selenium/wiki/ChromeDriver

    http://code.google.com/p/selenium/wiki/PythonBindings

    Хотя я являюсь автором CasperJS , я приглашаю вас проверить Ghost.py , веб-клиент webkit, написанный на Python .

    Хотя он сильно вдохновлен CasperJS, он не основан на PhantomJS, однако он все еще использует привязки PyQt и Webkit.

    Этот вопрос сейчас 5 лет, и в то время было большой проблемой запустить безгласный хром с использованием python, но хорошие новости:

    Начиная с версии 59, выпущенной в июне 2017 года, Chrome поставляется с безголовым драйвером , что означает, что мы можем использовать его в неграфической серверной среде и запускать тесты без визуального отображения страниц и т. Д., Что экономит много времени и памяти для тестирования или скребков , Установка Selenium для этого очень проста:

    (Я предполагаю, что вы установили драйвер selenium и chrome):

    from selenium import webdriver #set a headless browser options = webdriver.ChromeOptions() options.add_argument('headless') browser = webdriver.Chrome(chrome_options=options) 

    и теперь вы хром будете бегать без головы, если вы выберете опции из последней строки, он покажет вам браузер.

    casperjs – безгласный webkit, но он не даст вам привязки python, о которых я знаю; он кажется ориентированным на командную строку, но это не значит, что вы не могли запустить его из python таким образом, чтобы он удовлетворял вашим потребностям. Когда вы запускаете casperjs, вы предоставляете путь к javascript, который хотите выполнить; поэтому вам нужно будет испустить это из Python.

    Но все это в стороне, я поднимаю casperjs, потому что это, кажется, удовлетворяет легким, безголовым требованием очень красиво.

    Я использую это, чтобы получить драйвер:

     def get_browser(storage_dir, headless=False): """ Get the browser (a "driver"). Parameters ---------- storage_dir : str headless : bool Results ------- browser : selenium webdriver object """ # find the path with 'which chromedriver' path_to_chromedriver = '/usr/local/bin/chromedriver' from selenium.webdriver.chrome.options import Options chrome_options = Options() if headless: chrome_options.add_argument("--headless") chrome_options.add_experimental_option('prefs', { "plugins.plugins_list": [{"enabled": False, "name": "Chrome PDF Viewer"}], "download": { "prompt_for_download": False, "default_directory": storage_dir, "directory_upgrade": False, "open_pdf_in_system_reader": False } }) browser = webdriver.Chrome(path_to_chromedriver, chrome_options=chrome_options) return browser 

    Переключив параметр headless вы можете смотреть его или нет.