2014-11-17 1 views
0

python 2.7을 사용하여 URL 양식을 수정하고 있지만이를 허용하지 않습니다. 제발 도와주세요Mechanize를 사용하여 양식 수정

이것은 내가 지금까지 시도한 것입니다.

#@PydevCodeAnalysisIgnore 
import re 
import mechanize 
import cookielib 
## //*[@id="license"] 
## //*[@id="state"] 

# Browser 
br = mechanize.Browser() 

# 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) 

# Follows refresh 0 but not hangs on refresh > 0 
br.set_handle_refresh(mechanize._http.HTTPRefreshProcessor(), max_time=1) 

# User-Agent (this is cheating, ok?) 
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')] 

# The site we will navigate into, handling it's session 
br.open("http://www.autoreturn.com/app/search") 

# Select the first (index zero) form 
print [form for form in br.forms()][0] 

plate = "GEL997" 
# User credentials 
# br.select_form(id="searchParameters") 

br.form['license'] = plate 
br.form['licenseState'] = 'MD' 


#response = br.response() 
#a = response.read() 
#print a 
for f in br.forms(): 
    print f.name 


response = br.submit() 
content = response.read() 
result = re.findall(r'[Ss]earch', content) 
print result[0] 
+0

당신은'browser.forms()'를 사용하고 있습니다. 대신'br.forms()'를 사용 하시겠습니까? – xbb

+0

네, 죄송합니다. 해결하도록하겠습니다. 다시는 여전히 작동하지 않습니다. (제발 도와주세요. – jimagic

답변

1

licence 또는 liceneState라는 것은 없다. 다음 코드는 성공적으로 쿼리를 제출 :이 하나의 형태 없다 양식이 더를 가지고 있기 때문에

for control in br.form.controls: 
    print control 
    print "type=%s, name=%s value=%s" % (control.type, control.name, br[control.name]) 
1

:

import mechanize 
br = mechanize.Browser() 
res = br.open('http://www.autoreturn.com/app/search') 

br.form = list(br.forms())[0] 
br.form['l'] = 'GEL997' 
br.form['region'] = ['BCO-MD'] 
br.form['s'] = ['MD'] 
r = br.submit() 
print r.read() 

드롭 다운 메뉴에 유효한 값을 얻기 위해 다음 코드 중 인쇄를 사용하여 몇 변화는 다음

#Change this 
print [form for form in br.forms()][0] 
#to 
br.form = [form for form in br.forms()][0] 

그리고 :

이름, 당신은 양식을 얻기 위해이 작업을 수행 할 수 있습니다
#Change this 
br.form['license'] = plate 
br.form['licenseState'] = 'MD' 
#To 
br.form['l'] = plate 
br.form['s'] = ['MD',] 

편집 : 첫 번째 필드 드롭 다운 '지역'에 대한 값이 누락 된 것 같습니다. 라이센스 필드에 'license'및 'l'이있는 복수의 이름 태그가 있으며 'licenseState'와 동일하게 보입니다 그런 다음 다시 시도해보십시오.

관련 문제