Подтвердить что ты не робот

Как автоматизировать просмотр с помощью python?

Предположим, мне нужно выполнить набор процедур на определенном веб-сайте скажем, заполнить некоторые формы, нажать кнопку "Отправить", отправить данные обратно на сервер, получить ответ, снова сделать что-то на основе ответа и отправить данные обратно на сервер веб-сайта. Я знаю, что в python есть модуль webbrowser, но я хочу сделать это без вызова какого-либо веб-браузера. Он должен быть чистым script.

Есть ли модуль, доступный в python, который может помочь мне сделать это?
спасибо

4b9b3361

Ответ 1

Вы также можете взглянуть на механизировать. Он предназначен для обработки "программного просмотра веб-страниц с отслеживанием состояния" (согласно их сайту).

Ответ 2

selenium будет делать то, что вам нужно, и обрабатывает javascript

Ответ 3

Все ответы старые, я рекомендую, и я большой поклонник requests

С домашней страницы:

Стандартный модуль urllib2 Pythons обеспечивает большую часть HTTP которые вам нужны, но API полностью нарушен. Он был построен для другого времени - и другой сети. Это требует огромного объем работы (даже переопределение метода) для выполнения простейшего из задачи.

Все должно быть не так. Не в Python.

Ответ 4

Я думаю, что лучшие решения - это сочетание requests и BeautifulSoup, я просто хотел обновить вопрос, чтобы он мог обновляться.

Ответ 5

Selenium http://www.seleniumhq.org/ - лучшее решение для меня. вы можете закодировать его с помощью языка программирования python, java или любого языка программирования, который вам нравится с легкостью. и легкому имитационному преобразованию в программу.

Ответ 6

Есть много встроенных модулей 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 Суп.

Ответ 7

Selenium2 включает webdriver, который привязки python и позволяет использовать безглавой драйвер htmlUnit или переключиться на firefox или chrome для графической отладки.

Ответ 8

Не забывайте zope.testbrowser, который является оберткой вокруг mechanize.

zope.testbrowser предоставляет простой в использовании программируемый веб-браузер с особым вниманием к тестированию.

Ответ 9

Лучшее решение, которое я нашел (и в настоящее время реализую): - скрипты в python с использованием selenium webdriver - PhantomJS без браузера (если используется Firefox, у вас будет GUI и будет медленнее)

Ответ 11

Я нашел плагин 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()

Ответ 12

Вероятно, вы хотите urllib2. Он может обрабатывать такие вещи, как HTTPS, файлы cookie и аутентификацию. Вы также захотите BeautifulSoup, чтобы помочь разобрать HTML-страницы.

Ответ 13

Возможно, вы посмотрите на эти слайды из последний итальянский pycon (pdf): Автор перечислил большую часть библиотеки для выполнения очищения и автоматического просмотра в python. так что вы можете взглянуть на него.

Мне очень нравится twill (который уже был предложен), который был разработан одним из авторов носа и он специально предназначен для тестирования веб-сайтов.

Ответ 14

Internet Explorer конкретный, но довольно хороший:

http://pamie.sourceforge.net/

Преимущество по сравнению с urllib/BeautifulSoup заключается в том, что он выполняет Javascript, так как он использует IE.

Ответ 15

httplib2 + beautifulsoup

Используйте firefox + firebug + httpreplay, чтобы увидеть, что javascript передает и из браузера с веб-сайта. Используя httplib2, вы можете сделать то же самое через пост и получить

Ответ 16

Для автоматизации вы определенно хотите проверить

веб-бот

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

Это даже работает для сайтов с динамически меняющимися именами классов и идентификаторами.

Вот документация: https://webbot.readthedocs.io/