Управление браузером с помощью Python?
Можно ли управлять веб-браузером, например Firefox, с помощью Python?
Я хотел бы делать такие вещи, как
- запустите браузер
- принудительно нажимает на URL-адреса
- сделать скриншоты
и др.
Ответы
Ответ 1
Selenium Remote Control - это проект, который очень близок к тому, что вам нужно. В Python очень легко работать с подпакетом selenium.webdriver
, который поставляется вместе с ним. Когда-то это были два проекта. Они теперь объединены.
Установка
Simple!
$ 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
для простой задачи здесь.
Ответ 2
Если вам нужно сделать скриншоты, вам нужно отобразить страницы. Я бы рекомендовал использовать Selenium (как упоминалось Тимом), или затем spynner.
Вот пример кода, который вам нужен, используя spynner:
import spynner
browser = spynner.Browser()
browser.load("http://stackoverflow.com/q/3369073/")
browser.snapshot().save('file.png')
browser.close()
Ответ 3
wxWebConnect - это библиотека wxWidgets для управления Gecko (движок рендеринга Mozilla). Вместе с wxPython он позволит вам написать собственный (минимальный) веб-браузер в Python и, следовательно, контролировать клики.
Ответ 4
Эффективный способ управления браузером в Python - использовать PyQt4.QtWebKit
.
Ответ 5
Зависит от того, чего вы на самом деле хотите достичь. Если вам нужно сделать некоторые автоматические вещи без вмешательства пользователя, вы можете просто использовать базовый движок браузера, например Gecko или WebKit, без загрузки самого браузера. Есть готовые Python привязки к этим доступным двигателям.
Браузеры сами не предоставляют такой API для внешних процессов. Для Firefox вам нужно будет вставить некоторый код на стороне браузера в chrome, либо в качестве расширения, либо в плагин.
Ответ 6
Вопрос немного стар, но я не вижу ссылок на pywebkitgtk, вы должны попробовать. Я разработал spynner, используя привязки pyqt.qtwebkit, но программисты, которые предпочитают pygtk, должны попробовать pywebketgtk (что для меня больше питонично). Обратите внимание, что привязки Qt более полные (или, по крайней мере, это был последний раз, когда я проверил).