在我的工作中,我经常需要查看来自ethics.ga.gov 的我所在州的竞选披露报告。然而,状态系统是我处理过的最糟糕的网络应用程序之一。
它仅提供每个报告的贡献数据。每个选举周期有六份报告。雪上加霜的是,这个系统很慢。您不仅需要下载大量文件,而且还必须等待一分钟才能生成该死的东西。
这就像一个使流程自动化的明显机会。我计划做的是编写一个程序,我可以在其中输入链接到所有披露报告的页面的 URL,它会下载所有贡献报告。
对于给定的候选人,我会输入一个指向此页面的链接 - http://media.ethics.ga.gov/Search/Campaign/Campaign_Name.aspx?NameID=5753&FilerID=C2009000086&Type=candidate(查看报告链接在下拉列表中列表标题为“活动贡献报告”)。然后,我计划按照每个链接到报告页面,按照该链接到贡献页面,并下载 csv 文件。一旦我有了 csv 文件,(我认为)该项目就属于我的编码能力范围。
我现在遇到的问题是我不知道如何遵循查看报告链接。该系统是用 ASP 编写的。这些链接通过“查看报告”类型的调用调用 javascript 回发函数。ctl02 是控件的标识符。似乎将控制标识符映射到我需要的 url 的信息(在本例中为http://media.ethics.ga.gov/search/Campaign/Campaign_ReportOptions.aspx?NameID=5753&FilerID=C2009000086&CDRID=85776)嵌入在一个加密的 __VIEWSTATE 字段。
我安装了 Firebug 调试器来尝试以这种方式获取数据。虽然我对 Firebug 很陌生,但我能找到的只是在 net 选项卡中它显示了对我需要的 URL 的 GET 请求。
显然,不知何故我的浏览器正在获取下一页,这意味着它应该是可自动化的,但我现在不知所措。我一直在用 python 解决这个问题,因为我真的开始喜欢它了,但一切都是可以商量的。我在 Mac 上执行此操作(具有完整的 gnu 环境),并且希望继续在我熟悉的环境中工作,但如果我必须走那条路线,我确实有一个带有 Visual c++ '10 的 windows xp vm。
大家觉得呢?