如何解析未在视图源中显示代码的网站?

时间:2012-01-22 05:22:49

标签: python forms parsing mechanize

我不确定如何正确描述问题,但无论如何, 所以我想使用mechanize来获取表单并获取输入的名称。 但是,当我使用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 个答案:

答案 0 :(得分: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(正如您所看到的,它有几个变量 - Cookie,时间..)
  2. 第二页会将您重定向到https://shb.ais.ucla.edu/shibboleth-idp/AuthnEngine
  3. 第三页会将您重定向到https://shb.ais.ucla.edu/shibboleth-idp/Authn/RemoteUser
  4. 最后一页将以200响应并向您发送带有表单和几个隐藏输入字段的标记。表单将自动提交onload,只有在第五次响应时,您才能获得实际的登录页面。
  5. 现在我不知道python如何处理重定向标头。您可能需要查看您获得的响应。在最好的情况下,它将是隐藏变量的最后一页,您需要解析这些并将POST请求发送到同一个URL以获取真正的登录页面。在最坏的情况下,您需要从第一页开始一直关注标题。