Эмулировать javascript _dopostback в python, утилизация - PullRequest
2 голосов
/ 10 октября 2010

Здесь ССЫЛКА предполагается, что можно "выяснить, что делает JavaScript, и эмулировать его в своем коде Python:" Это то, что я хотел бы помочь, т. Е. Мой вопрос. Как мне эмулировать JavaScript: __ doPostBack?

Код с сайта (полный источник страницы здесь ССЫЛКА :

<a style="color: Black;" href="javascript:__doPostBack('ctl00$ContentPlaceHolder1$gvSearchResults','Page$2')">2</a>

Конечно, я в основном знаю, куда идти.

Заранее спасибо за вашу помощь и идеи

Хорошо, есть много сообщений, спрашивающих, как НАЖМИТЬ кнопку javascript, когда утилизация веб-страниц с помощью библиотек python механизирована, beautifulsoup ...., похожая. Я вижу, что многие ответы "это не поддерживается" используют это решение не на Python. Я думаю, что решение этой проблемы на python принесло бы большую пользу многим. В этом свете я не ищу ответы типа использования x, y или z, которые не являются кодом Python или требуют взаимодействия с браузером.

Ответы [ 2 ]

3 голосов
/ 10 октября 2010

Страница механизации не предполагает, что вы можете эмулировать JavaScript в Python. Это говорит о том, что вы можете изменить скрытое поле в форме, таким образом обманывая веб-сервер, который выбрал человек 1 . Вам все еще нужно проанализировать цель самостоятельно.

У этой проблемы не будет решения на основе Python, если только вы не захотите создать интерпретатор JavaScript в Python.

Мои мысли по этой проблеме привели меня к трем возможным решениям:

  1. создать приложение XULRunner
  2. автоматизация браузера
  3. попытка интерпретировать код на стороне клиента

Из этих трех я действительно видел только обсуждение 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, который почти всегда является веб-браузером, используемым человеком

0 голосов
/ 10 октября 2010

Лучший способ - использовать веб-браузер. Мы используем iMacros для Firefox для веб-очистки с очень хорошим успехом. Он также работает с Python (мы используем его с C #).

Недостаток использования веб-браузера заключается в том, что вы не получаете ту же производительность, что и безголовый инструмент, такой как Mechanize. Но огромное преимущество в том, что он работает с любым сайтом.

...