mechanize (python) нажмите на ссылку типа javascript

можно ли механизировать следовать якорной ссылке, которая имеет тип javascript?

Я пытаюсь войти на сайт в python, используя mechanize и beautifulsoup.

это привязка

<a id="StaticModuleID15_ctl00_SkinLogin1_Login1_Login1_LoginButton" href="javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(&quot;StaticModuleID15$ctl00$SkinLogin1$Login1$Login1$LoginButton&quot;, &quot;&quot;, true, &quot;Login1&quot;, &quot;&quot;, false, true))"><img id="StaticModuleID15_ctl00_SkinLogin1_Login1_Login1_Image2" border="0" src="../../App_Themes/defaulthttp://img.rupython.com/pythonMember/btn_loginenter.gif" align="absmiddle" style="border-width:0px;" /></a> 

и вот что я пробовал

  links = SoupStrainer('a', id="StaticModuleID15_ctl00_SkinLogin1_Login1_Login1_LoginButton") [anchor for anchor in BeautifulSoup(data, parseOnlyThese=links)] link = mechanize.Link( base_url = self.url, url = str(anchor['href']), text = str(anchor.string), tag = str(anchor.name), attrs = [(str(name), str(value)) for name, value in anchor.attrs]) response2 = br.follow_link(link) 

Прямо сейчас я получаю сообщение об ошибке,

urllib2.URLError:

любая помощь или предложение оценены

редактировать

После комментариев помощников я пошел и немного посмотрел на код страницы asp.

Я нашел несколько полезных скриптов, но я не уверен, что мне нужно делать в python для эмуляции JS-кода с помощью python. В каком-либо месте я не вижу, какие cookie-файлы установлены, я смотрю на неправильные места?

 <form name="form1" method="post" action="BrowseSchedule.aspx?ItemId=75" onsubmit="javascript:return WebForm_OnSubmit();" id="form1"> //<![CDATA[ function WebForm_OnSubmit() { if (typeof(ValidatorOnSubmit) == "function" && ValidatorOnSubmit() == false) return false; return true; } //]]> <script type="text/javascript"> //<![CDATA[ var theForm = document.forms['form1']; if (!theForm) { theForm = document.form1; } function __doPostBack(eventTarget, eventArgument) { if (!theForm.onsubmit || (theForm.onsubmit() != false)) { theForm.__EVENTTARGET.value = eventTarget; theForm.__EVENTARGUMENT.value = eventArgument; theForm.submit(); } } //]]> </script> function WebForm_DoPostBackWithOptions(options) { var validationResult = true; if (options.validation) { if (typeof(Page_ClientValidate) == 'function') { validationResult = Page_ClientValidate(options.validationGroup); } } if (validationResult) { if ((typeof(options.actionUrl) != "undefined") && (options.actionUrl != null) && (options.actionUrl.length > 0)) { theForm.action = options.actionUrl; } if (options.trackFocus) { var lastFocus = theForm.elements["__LASTFOCUS"]; if ((typeof(lastFocus) != "undefined") && (lastFocus != null)) { if (typeof(document.activeElement) == "undefined") { lastFocus.value = options.eventTarget; } else { var active = document.activeElement; if ((typeof(active) != "undefined") && (active != null)) { if ((typeof(active.id) != "undefined") && (active.id != null) && (active.id.length > 0)) { lastFocus.value = active.id; } else if (typeof(active.name) != "undefined") { lastFocus.value = active.name; } } } } } } if (options.clientSubmit) { __doPostBack(options.eventTarget, options.eventArgument); } } 

  • Использование Python и Mechanize для отправки данных формы и проверки подлинности
  • Как обрабатывать IncompleteRead: в python
  • Использование запросов Python для выбора форм
  • Скребок экрана: обойти «Ошибка HTTP 403: запрос, запрещенный robots.txt»
  • 302s и потерять файлы cookie с urllib2
  • Что означает «объект модуля не вызываемый»?
  • Механизм и Javascript
  • Механизм Python с NTLM получает AttributeError: экземпляр HTTPResponse не имеет атрибута '__iter__'
  • 2 Solutions collect form web for “mechanize (python) нажмите на ссылку типа javascript”

    Я не думаю, что это возможно с модулем механизации: у него нет возможности взаимодействовать с JavaScript: его чисто Python и HTTP.

    Тем не менее, вы можете быть заинтересованы в модуле python-spidermonkey , который, похоже, направлен на то, чтобы позволить вам делать именно такие вещи. Согласно его веб-сайту, цель – позволить вам

    «Выполнить произвольный код JavaScript из Python. Позволяет ссылаться на произвольные объекты и функции Python в виртуальной машине JavaScript»,

    Я еще не использовал его, но, похоже, он будет делать то, что вы ищете, хотя он все еще находится в альфе.

    Вы можете установить файлы cookie с помощью cookielib

     import mechanize import cookielib # add headers to your browser also browser = mechanize.Browser() browser.addheaders = [('User-agent', 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008071615 Fedora/3.0.1-1.fc9 Firefox/3.0.1')] cj = cookielib.LWPCookieJar() browser.set_cookiejar(cj) 

    Я сомневаюсь, что это даже актуально сейчас, но о хорошо 🙂

    Python - лучший язык программирования в мире.