Страница механизации не предполагает, что вы можете эмулировать JavaScript в Python. Это говорит о том, что вы можете изменить скрытое поле в форме, таким образом обманывая веб-сервер, который выбрал человек 1 . Вам все еще нужно проанализировать цель самостоятельно.
У этой проблемы не будет решения на основе Python, если только вы не захотите создать интерпретатор JavaScript в Python.
Мои мысли по этой проблеме привели меня к трем возможным решениям:
- создать приложение XULRunner
- автоматизация браузера
- попытка интерпретировать код на стороне клиента
Из этих трех я действительно видел только обсуждение 2. Я видел что-то
близко к 1 в коммерческом приложении, где вы в основном создаете
скрипты, просматривая сайты и выбирая вещи на страницах, которые вы
хотел бы, чтобы сценарий был извлечен в будущем.
1 можно было бы заставить работать со скриптом Python, приняв
сериализация (JSON?) wsgi Запрос объектов, получение приложением для извлечения
URL, затем отправка обработанной страницы в качестве объекта ответа wsgi. Вы могли бы
возможно, оберните некоторое промежуточное программное обеспечение вокруг urllib2 для достижения этой цели. Overkill
возможно, но немного забавно думать.
2 обычно достигается с помощью Selenium RC (Remote Control), ориентированного на тестирование
инструмент. Он предоставляет несколько методов, таких как getHtmlSource
, но большинство людей, которых я
слышал, что его используют, не нравится его API.
3 Понятия не имею. node.js сейчас очень жарко, но у меня нет
коснулся этого. Мне никогда не удавалось собрать spidermonkey на моей Ubuntu
машина, так что я тоже не трогал. Я догадываюсь, что для того, чтобы сделать
это, вы бы предоставить источник HTML и ваши данные в JS
интерпретатор, который должен был бы притворяться вашим User-Agent и т. д. в случае
JavaScript хотел восстановить соединение с сервером.
1 ну, более технически, пользовательский агент, совместимый с JavaScript, который почти всегда является веб-браузером, используемым человеком