Действительно ли возможно управлять веб-браузером как Firefox с помощью Python?
Я хотел бы сделать вещи как
и т.д.
Зависит от того, чего вы на самом деле хотите достичь. Если вам нужно сделать что-то автоматическое без вмешательства пользователя, вы можете просто использовать базовый движок браузера, такой как Gecko или WebKit, без загрузки самого браузера. Доступны готовые привязки Python к этим движкам.
Сами браузеры не предоставляют такого рода API для внешних процессов. Для Firefox вам нужно будет внедрить код на стороне браузера в Chrome в виде расширения или плагина.
Selenium Remote Control - это проект, очень близкий к тому, что вам нужно. Начать работать на Python очень легко с подпакетом selenium.webdriver
, который поставляется вместе с ним. Когда-то это были два проекта. Теперь они объединились.
Все просто!
$ pip install -U selenium
>>> from selenium import webdriver
>>> ff = webdriver.Firefox()
>>> ff.get("http://stackoverflow.com/q/3369073/395287")
>>> ff.save_screenshot("/absolute/path/to/webpage.png")
Документация по Selenium может немного сбивать с толку, поскольку существует два режима взаимодействия с браузерами. Помимо режима webdriver
, есть возможность общаться с «автономным сервером удаленного управления Selenium». Этот подход впервые задокументирован в официальной документации , но я бы остановился на webdriver
для простой задачи здесь.
Отличный способ управления браузером в Python - использовать PyQt4.QtWebKit
.
Если вам нужно делать скриншоты, то вам нужно рендерить страницы. Я бы рекомендовал использовать Selenium (как упоминал Тим), или spynner.
Вот пример кода того, что вам нужно, используя spynner:
import spynner
browser = spynner.Browser()
browser.load("http://stackoverflow.com/q/3369073/")
browser.snapshot().save('file.png')
browser.close()
wxWebConnect - это библиотека wxWidgets для управления Gecko (движок рендеринга Mozilla). Вместе с wxPython она позволит вам написать собственный (минимальный) веб-браузер на Python и, следовательно, управлять кликами.