Эмулировать javascript _dopostback в python, утилизация
Здесь ССЫЛКА предполагает, что можно "выяснить, что делает 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 ответа
Страница механизации не предполагает, что вы можете эмулировать JavaScript в Python. Это говорит о том, что вы можете изменить скрытое поле в форме, таким образом обманывая веб-сервер, что человек 1 выбрал это поле. Вам все еще нужно проанализировать цель самостоятельно.
Для этой проблемы не будет решения, основанного на Python, если только вы не захотите создать интерпретатор JavaScript в Python.
Мои мысли по этой проблеме привели меня к трем возможным решениям:
- создать приложение XULRunner
- автоматизация браузера
- попытка интерпретировать код на стороне клиента
Из этих трех я действительно видел только обсуждение 2. Я видел что-то близкое к 1 в коммерческом скребковом приложении, где вы в основном создаете скрипты, просматривая сайты и выбирая на страницах то, что вы хотите, чтобы скрипт добывать в будущем.
Можно было бы заставить работать со скриптом Python, приняв сериализацию (JSON?) Объектов запроса wsgi, заставить приложение получить URL-адрес, а затем отправить обработанную страницу как объект ответа wsgi. Вы можете обернуть некоторое промежуточное программное обеспечение вокруг urllib2 для достижения этой цели. Наверное, излишне, но думать об этом довольно весело.
2 обычно достигается с помощью Selenium RC (Remote Control), инструмента, ориентированного на тестирование. Он предоставляет несколько методов, таких как getHtmlSource
но большинству людей, которые я слышал, используя его, не нравится его API.
+3 Понятия не имею о. node.js сейчас очень горячий, но я его не трогал. Мне никогда не удавалось собрать spidermonkey на моей машине с Ubuntu, поэтому я тоже не касался этого. Я догадываюсь, что для того, чтобы сделать это, вы должны предоставить исходный код HTML и свои данные интерпретатору JS, который должен был бы быть фальсифицированным в качестве вашего User-Agent и т. Д. В случае, если JavaScript хочет повторно подключиться к серверу.
1, более технически, JavaScript-совместимый пользовательский агент, который почти всегда является веб-браузером, используемым человеком
Лучший способ - использовать вместо этого веб-браузер. Мы используем iMacros для Firefox с очень хорошим успехом. Это также работает с Python (мы используем его с C#).
Недостаток использования веб-браузера заключается в том, что вы не получаете ту же производительность, что и безголовый инструмент, такой как Mechanize. Но огромное преимущество в том, что он работает с любым сайтом.