2014-04-18 4 views
0

Как использовать механизацию для ввода имени пользователя и пароля на этот сайт?Использование механизации для ввода имени пользователя и пароля

Я удалил и изменил свой пост, потому что мой предыдущий был слишком много дополнительной информации

Я прочитал в других постах, что, возможно, это связано с JavaScript, но как я могу сказать? и что мне делать с этой информацией?

import mechanize 
import cookielib 

url = 'https://www.pin1.harvard.edu/cas/login?service=https%3A%2F%2Fwww.pin1.harvard.edu%2Fpin%2Fauthenticate%3F__authen_application%3DFAS_AC_AUTHENTICATOR' 
#req = requests.get(url) 
#dom = web.Element(req.text) 

#Handles all the browser details 
br = mechanize.Browser() 
br.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')] 
#self.browser = mechanize.Browser(factory=mechanize.RobustFactory()) 

#Cookie Jar 
cj = cookielib.LWPCookieJar() 
br.set_cookiejar(cj) 

# Browser options 
br.set_handle_equiv(True) 
br.set_handle_gzip(True) 
br.set_handle_redirect(True) 
br.set_handle_referer(True) 
br.set_handle_robots(False) 

br.open(url) 


#Select First Form 
#br.select_form(nr=1) 

#br['username'] = '40839852' 

#print list(br.forms())[0] 

for form in br.forms(): 
    print "Form name:", form.name 
    print form 
    break 

br.select_form(name= formname) 
br[searchname] = term 
res = br.submit() 
content = res.read() 
dom = web.Element(content) 

след вызовов TRACEBACK

ParseError: unexpected '/' char in declaration 
---> 32 for form in br.forms(): 
    33  print "Form name:", form.name 
    34  print form 

ОБНОВЛЕНИЕ - НА ОСНОВЕ Пако ПРЕДЛОЖЕНИЮ Я ДОБАВЛЕНО ... Но я все еще получаю отслеживающий. Python unable to retrieve form with urllib or mechanize

beg = re.search(t, res.read()).span()[1] 
res.set_data(res.get_data()[beg:]) 
br.set_response(response) 
br.select_form(nr=0) 


<ipython-input-25-bd1b73406b45> in <module>() 
    28 br.set_response(response) 
    29 
---> 30 br.select_form(nr=0) 
    31 
    32 
ParseError: unexpected '-' char in declaration 
+0

, но я предполагаю, что 'br.forms' не является функцией. Что произойдет, если вы удалите круглые скобки? –

+0

К сожалению, это функция, о которой я думаю. http://wwwsearch.sourceforge.net/mechanize/, если вы удалите parens, вы получите: > – user3314418

+0

может быть проще сделать это в селене – qwwqwwq

ответ

1

Это, как я выбрал первую форму в моем коде.

br.select_form(nr=0) 
#Form fields to populate 
br.form['username'] = username 
br.form['password'] = password 
#Submit the login form 
br.submit() 

Измените его в соответствии с вашими потребностями. «Nr = 0» - это, вероятно, то, что вы ищете.

Но проблема в DOCTYPE. Я протестировал следующее, и он удалил его.

html = br.response().get_data().replace('<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd >', '') 
response = mechanize.make_response(
    html, [("Content-Type", "text/html")], 
url, 200, "OK") 
br.set_response(response) 

Я принял это прямо из дальнего удара Mechanize FAQ.

+0

, к сожалению, я все еще получаю трассировку parseerror, говорящую о неожиданном объявлении '/' char. Это как-то связано с функцией select_form ---------------------------------------- ----------------------------------- ParseError Traceback (последний последний вызов) in () ---> 25 br.select_form (nr = 0) – user3314418

+0

Я обновил свой ответ. – taco

+0

Что мне делать, если обнаружу ошибки? (1) Несоответствие между общедоступными и системными идентификаторами в объявлении DOCTYPE (2). Кодировка символов, объявленная на уровне документа – user3314418

Смежные вопросы