Ответ 1
Вы также можете взглянуть на механизировать. Он предназначен для обработки "программного просмотра веб-страниц с отслеживанием состояния" (согласно их сайту).
Предположим, мне нужно выполнить набор процедур на определенном веб-сайте скажем, заполнить некоторые формы, нажать кнопку "Отправить", отправить данные обратно на сервер, получить ответ, снова сделать что-то на основе ответа и отправить данные обратно на сервер веб-сайта. Я знаю, что в python есть модуль webbrowser, но я хочу сделать это без вызова какого-либо веб-браузера. Он должен быть чистым script.
Есть ли модуль, доступный в python, который может помочь мне сделать это?
спасибо
Вы также можете взглянуть на механизировать. Он предназначен для обработки "программного просмотра веб-страниц с отслеживанием состояния" (согласно их сайту).
selenium будет делать то, что вам нужно, и обрабатывает javascript
Все ответы старые, я рекомендую, и я большой поклонник requests
С домашней страницы:
Стандартный модуль urllib2 Pythons обеспечивает большую часть HTTP которые вам нужны, но API полностью нарушен. Он был построен для другого времени - и другой сети. Это требует огромного объем работы (даже переопределение метода) для выполнения простейшего из задачи.
Все должно быть не так. Не в Python.
Я думаю, что лучшие решения - это сочетание requests и BeautifulSoup, я просто хотел обновить вопрос, чтобы он мог обновляться.
Selenium http://www.seleniumhq.org/ - лучшее решение для меня. вы можете закодировать его с помощью языка программирования python, java или любого языка программирования, который вам нравится с легкостью. и легкому имитационному преобразованию в программу.
Есть много встроенных модулей python, которые помогут с этим. Например urllib и htmllib.
Проблема будет проще, если вы измените способ приближения к ней. Вы говорите, что хотите "заполнить некоторые формы, нажать кнопку" Отправить ", отправить данные на сервер, получить ответ", который звучит как четырехэтапный процесс.
Фактически, вам нужно опубликовать некоторые данные на веб-сервере и получить ответ.
Это так же просто, как:
>>> import urllib
>>> params = urllib.urlencode({'spam': 1, 'eggs': 2, 'bacon': 0})
>>> f = urllib.urlopen("http://www.musi-cal.com/cgi-bin/query", params)
>>> print f.read()
(пример, взятый из документов urllib).
Что вы делаете с ответом, зависит от того, насколько сложным является HTML и что вы хотите с ним делать. Вы можете уйти с синтаксическим анализом, используя регулярное выражение или два, или вы можете использовать класс htmllib.HTMLParser или, возможно, более гибкий парсер более высокого уровня, например Beautiful Суп.
Selenium2 включает webdriver, который привязки python и позволяет использовать безглавой драйвер htmlUnit или переключиться на firefox или chrome для графической отладки.
Не забывайте zope.testbrowser, который является оберткой вокруг mechanize.
zope.testbrowser предоставляет простой в использовании программируемый веб-браузер с особым вниманием к тестированию.
Лучшее решение, которое я нашел (и в настоящее время реализую): - скрипты в python с использованием selenium webdriver - PhantomJS без браузера (если используется Firefox, у вас будет GUI и будет медленнее)
HTMLUNIT - это пакет, если вы разработчик Java. http://htmlunit.sourceforge.net/apidocs/index.html
Я нашел плагин iMacros Firefox (который является бесплатным), чтобы работать очень хорошо.
Он может быть автоматизирован с помощью Python с использованием интерфейсов COM-объектов Windows. Вот пример кода из http://wiki.imacros.net/Python. Для этого требуется Расширения Windows Python:
import win32com.client
def Hello():
w=win32com.client.Dispatch("imacros")
w.iimInit("", 1)
w.iimPlay("Demo\\FillForm")
if __name__=='__main__':
Hello()
Вероятно, вы хотите urllib2. Он может обрабатывать такие вещи, как HTTPS, файлы cookie и аутентификацию. Вы также захотите BeautifulSoup, чтобы помочь разобрать HTML-страницы.
Возможно, вы посмотрите на эти слайды из последний итальянский pycon (pdf): Автор перечислил большую часть библиотеки для выполнения очищения и автоматического просмотра в python. так что вы можете взглянуть на него.
Мне очень нравится twill (который уже был предложен), который был разработан одним из авторов носа и он специально предназначен для тестирования веб-сайтов.
Internet Explorer конкретный, но довольно хороший:
Преимущество по сравнению с urllib/BeautifulSoup заключается в том, что он выполняет Javascript, так как он использует IE.
httplib2 + beautifulsoup
Используйте firefox + firebug + httpreplay, чтобы увидеть, что javascript передает и из браузера с веб-сайта. Используя httplib2, вы можете сделать то же самое через пост и получить
Для автоматизации вы определенно хотите проверить
веб-бот
Он основан на селене и предлагает гораздо больше функций с очень небольшим кодом, например, автоматический поиск элементов для выполнения таких действий, как нажатие, ввод текста на основе ваших параметров.
Это даже работает для сайтов с динамически меняющимися именами классов и идентификаторами.
Вот документация: https://webbot.readthedocs.io/