Создание безголового экземпляра Chrome в Python - PullRequest
12 голосов
/ 19 марта 2012

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

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

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

Ответы [ 5 ]

10 голосов
/ 19 марта 2012

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

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

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

8 голосов
/ 16 сентября 2017

Этому вопросу уже 5 лет, и в то время было непросто запустить Chrome без головы с помощью Python, но хорошая новость:

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

(я предполагаю, что вы установили драйвер селен и хром):

from selenium import webdriver

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

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

2 голосов
/ 22 мая 2012

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

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

0 голосов
/ 18 августа 2017

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

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, вы можете смотреть его или нет.

0 голосов
/ 19 марта 2012

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

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

...