Как я могу отсканировать результат HTML в нетривиальном пользовательском сценарии

Я хочу иметь возможность получить HTML-код для страницы, который, если бы я делал это в интерактивном режиме в браузере, включал бы несколько действий и загрузку страниц: 1. Перейдите на домашнюю страницу 2. Введите текст в форму входа и отправьте форму (post) 3. В сообщении будут проходить различные перенаправления и использование набора фреймов.

Файлы cookie адаптируются на протяжении всего этого процесса.

В браузере, после отправки я просто получаю страницу.

Но чтобы сделать это с помощью curl (в PHP или как-то еще) или wget или другой низкоуровневой технологии, управление файлами cookie, перенаправлениями и наборами фреймов становится довольно трудоемким и очень тесно связывает мой скрипт с сайтом (делая его очень восприимчивым даже к небольшим изменения на сайте, с которого я соскребаю.)

Кто-нибудь может предложить способ сделать это?

Я уже смотрел на Crowbar, PhantomJS и Lynx (с параметрами cmd_log/cmd_script), но связать все воедино, чтобы имитировать то, что я делал бы в Firefox или Chrome, сложно.

(Кроме того, целевому веб-сайту может быть даже полезно / необходимо подумать, что этот скрипт - Firefox, Chrome или "настоящий" браузер)

3 ответа

Решение

Один из способов сделать это - использовать Selenium RC. Хотя обычно он используется для тестирования, по своей сути это просто служба удаленного управления браузером.

Используйте этот веб-сайт в качестве отправной точки: http://seleniumhq.org/projects/remote-control/

Используйте такой инструмент, как Firebug, чтобы проверить, какие заголовки отправляются на веб-сайт для входа в систему, а затем воспроизвести это точно в своем коде.

Или просто войдите в свой браузер, а затем повторно используйте cookie в своем коде.

Вы можете использовать irobot на irobotsoft, чтобы записать робота и воспроизвести его.

Если вы предпочитаете низкоуровневое управление, вы можете использовать интерфейс HTQL python, см.: http://htql.net/htql-python-manual.pdf. Это позволяет вам получить доступ к браузеру на основе IE из python.

Другие вопросы по тегам