Как я могу отсканировать результат 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.