【问题标题】:how to parse website that doesn't show the codes in the view source?如何解析不显示视图源代码的网站?
【发布时间】:2012-02-16 01:36:45
【问题描述】:

我不确定如何正确描述这些问题,但无论如何, 所以我想使用 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()

提前致谢, 理查德。

【问题讨论】:

  • 尝试beautifulSoup,您可以尝试使用其xml/html树结构而不是标签名称来解析页面。
  • 我也试过beautifulSoup,但也没有用。

标签: python forms parsing mechanize


【解决方案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 并向您发送带有表单和几个隐藏输入字段的标记。表单将在加载时自行提交,只有在第五次响应时,您才会获得实际的登录页面。

现在我不知道 python 如何处理重定向标头。您可能需要查看您收到的回复。在最好的情况下,它将是带有隐藏变量的最后一页,您需要解析这些变量并将 POST 请求发送到相同的 url 以获取真正的登录页面。在最坏的情况下,您需要从第一页一直关注标题。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2017-07-30
  • 1970-01-01
  • 2012-01-01
  • 1970-01-01
  • 2010-10-09
  • 1970-01-01
  • 2022-12-12
  • 1970-01-01
相关资源
最近更新 更多