【问题标题】:Python request get data through HTTPS tunnelPython请求通过HTTPS隧道获取数据
【发布时间】:2015-11-24 21:07:55
【问题描述】:

我目前正在从https://www3.bcb.gov.br/expectativas/publico/en/serieestatisticas 的公共系列数据中提取数据

我相信这是一个使用 apache wicket 的公共页面。

我通常对抓取没问题,无论是 GET 还是 POST。在这里,我和我的同事们陷入了困境。任何人都可以帮助了解实际发出请求需要使用什么 URL。到目前为止,这是我所得到的:

带有输入的表单:

手动执行的 Fiddler 捕获:

文本视图: form19_hf_0 =&indicador = 0&calculo = 0&linhaPeriodicidade%3Aperiodicidade = 0&tfDataInicial = 11%2F10%2F2015&tfDataFinal = 11%2F24%2F2015&divPeriodoRefereEstatisticas%3AgrupoAnoReferencia%3AanoReferenciaInicial = 16&divPeriodoRefereEstatisticas%3AgrupoAnoReferencia%3AanoReferenciaFinal = 16&btnCSV =生成+ CSV P>

我在请求中传递的表单数据:

总结:

我需要一些帮助,我似乎无法让 POST 正常工作,它会将我带到另一个页面,我不知道如何处理这个页面。

注意:我正在尝试获取 CSV。

我使用的库主要是 Requests(我打算使用 LXML,但我认为它不适用于这里)。

我一直在尝试与 Postman 和 Fiddler 一起找出正确的表单,以了解请求需要是什么。

【问题讨论】:

  • 你发布到哪个 URL,被重定向时你会得到哪个 HTTP 状态码?您使用哪个框架进行抓取?根据个人经验,我可以推荐requests 来处理更复杂的 HTTP 场景。
  • 我正在使用请求和 lxml。困惑是我不确定使用哪一个。如果它只是简单地返回 HTML 并解析它就可以了,但它不仅仅是发送一个发布请求。它可能需要先创建一个我很模糊的会话。

标签: python https request urllib2 tunnel


【解决方案1】:

所以,

对此的解决方案有些间接。我们无法直接进行 POST,因为页面以通常无法预测的方式增加了实际的 POST url。

我们使用的解决方案是安装 Selenium Web 驱动程序并使用它来模拟下拉可见值和按钮点击。

结果非常干净。

感谢任何可能遇到类似问题的人。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-09-01
    • 2014-08-19
    • 1970-01-01
    • 2021-04-16
    • 2019-09-14
    • 1970-01-01
    • 2012-03-20
    相关资源
    最近更新 更多