2009-12-04 40 views
2

這是一個非常專業的情況下,我覺得彆扭要求它;不過,我正在努力工作。Python的機械化失去對屬性的第二個開放

我需要通過表單和結果頁面,所以我一直在使用機械化在Python中,表單提交後的鏈接嵌入JavaScript後,所以我不能簡單地follow_link遵循一個跟蹤號碼。我想要做的是將url正則表達出來,然後詢問open(),但是當我這樣做時 - 我遇到了一些問題。

我可以叫br.geturl()br.title()目標頁面上就好了,但是當涉及的時間來閱讀有問題的頁面的源代碼,它拋出

AttributeError: mechanize._mechanize.Browser instance has no attribute read (perhaps you forgot to .select_form()?) 

是否有某種方式來做到這一點還是我我猴子修補它太多了,任何的建議是了不起

編輯[更多代碼{真難看只是想獲得它的工作}]:

cosn="########" 
baseurl="http://aaa.com/" 
search="thing.do" 

br=Browser() 
br.open(baseurl+search) 
br.select_form('traceForm') 
br['consignments']=cosn 
req=br.submit() 
pars=Soup(req.read()) 
found_url=re.match(r"javascript:window.location.href = '(?P<url>[\w\d=&?\.]+)", pars.find('td', attrs={'class':'select'})['onclick']).group('url') 

br.open(baseurl+found_url) 
print br.title() # works 
print br.geturl() # works 
print br.read() # throws exception 
+1

你能發佈一些更多的代碼? – codeape 2009-12-04 11:56:31

回答

7

你從來就瀏覽器實例第一.read方法調用。那是因爲它沒有這種方法。該Browswer.responseread方法,因此,如果你想獲得響應的主體你需要做的:

response = br.response() 
response.read() 

對於未來,你可以使用dir(obj)看到物體obj的內容,無論是瀏覽器或其他任何東西。

+2

非常感謝你,我知道我在做什麼是錯誤的,但我對機械文檔感到無奈 – dagoof 2009-12-04 13:50:09