2012-01-22 8 views
4

問題を正しく記述する方法はわかりませんが、とにかく です。私は機械化を使ってフォームを取得し、入力の名前を取得したいと思います。 しかし、mechanizeを使って解析すると、フォーム名と入力名は表示されません。 ウェブサイトを見て手動で試してみると、要素を調べて入力名を得ることができますが、動的であるため、要素を調べるたびに別の名前が付けられます。何か案が?ちなみに 私が解析しようとしているウェブサイトは誰でも興味があれば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

try [beautifulSoup](http://www.crummy.com/software/BeautifulSoup/)では、タグ名の代わりにxml/htmlツリー構造を使用してページを解析できます。 –

+0

私もbeautifulSoupを試しましたが、どちらもうまくいきませんでした。 – 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. 2ページ目がhttps://shb.ais.ucla.edu/shibboleth-idp/AuthnEngine
  3. にリダイレクトされます
  4. 第3ページはあなたにリダイレクトされますhttps://shb.ais.ucla.edu/shibboleth-idp/Authn/RemoteUser
  5. 最後のページは200と応答し、フォームと隠れた入力フィールドのカップルでマークアップを送信します。フォームはonloadを送信し、5回目の応答でのみ実際のログインページを取得します。

今、私はどのようにpythonがリダイレクトヘッダを処理するのか分かりません。あなたは、あなたが得ている反応を見る必要があるかもしれません。最良のシナリオでは、隠れ変数を持つ最後のページになります。それらを解析し、同じURLにPOST要求を送信して、実際のログインページを取得する必要があります。ワーストケースのシナリオでは、最初のページからヘッダーをたどる必要があります。

+0

最初のページのヘッダーに従う方法をもう少し説明できますか? TIA。 – ordinaryman09

+0

urllib2を使用してリダイレクトを取得する方法については、以下を参照してください。http://stackoverflow.com/a/8794765/1104941 – sgallen

関連する問題