2012-01-22 48 views
4

我不知道如何正確描述問題,但無論如何, 所以我想用機械化來抓取表單並獲取輸入的名稱。但是,當我使用機械化解析時,它不顯示錶單名稱和輸入名稱。 如果我通過查看網站手動嘗試,我必須檢查元素,以便我可以獲取輸入名稱,但仍然是動態的,所以每次檢查元素時,都會給我不同的名稱。任何想法?順便說一下,我想解析的網站是https://www.ursa.ucla.edu/logon/logon.asp,如果有人感興趣的話。如何解析不顯示視圖源代碼的網站?

這是我已經試過:

br = mechanize.Browser(factory=mechanize.RobustFactory())  
    br.open("https://www.ursa.ucla.edu/logon/logon.asp/") 
    br.select_form(nr=0) 
    print br.response().read() 

由於提前, 理查德。

+1

嘗試[beautifulSoup](http://www.crummy.com/software/BeautifulSoup/),您可以嘗試使用其xml/html樹結構而不是標籤名稱解析頁面。 –

+0

我也嘗試過美麗的鬆糕,但它也沒有工作。 – ordinaryman09

回答

1

您嘗試解析的網頁無法直接訪問。 當您訪問https://www.ursa.ucla.edu/logon/logon.asp將做到以下幾點:

  1. 您重定向到https://shb.ais.ucla.edu/shibboleth-idp/profile/Shibboleth/SSO?shire=https%3A%2F%2Fwww.ursa.ucla.edu%2FShibboleth.sso%2FSAML%2FPOST&time=1327213354&target=cookie%3Aa872692c&providerId=https%3A%2F%2Fwww.ursa.ucla.edu%2Fshibboeth-sp(你可以看到這有幾個變量 - 餅乾,時間..)
  2. 第二頁將您重定向到https://shb.ais.ucla.edu/shibboleth-idp/AuthnEngine
  3. 第三頁會將您重定向到https://shb.ais.ucla.edu/shibboleth-idp/Authn/RemoteUser
  4. 最後一頁將以200響應並向您發送帶有隱藏輸入字段的窗體和幾個標記。表單將自動提交,只有在第五個響應時纔會得到實際的登錄頁面。

現在我不知道python如何處理重定向頭。您可能需要查看您正在收到的回覆。在最好的情況下,它將成爲隱藏變量的最後一頁,您將需要解析這些頁面並將POST請求發送到相同的URL以獲取真實的登錄頁面。在最糟糕的情況下,您需要從首頁開始一直跟隨標題。

+0

您能否解釋一下如何從第一頁開始追蹤標題? TIA。 – ordinaryman09

+0

以下涉及使用urllib2捕獲重定向的方法:http://stackoverflow.com/a/8794765/1104941 – sgallen