我正在尝试从网站自动提取数据,我真的不知道从哪里开始。我们的一家供应商通过“ Business Objects 11 ”在线应用程序为我们提供了一些设备记录数据。如果您不熟悉此在线应用程序,请将其视为基于Web的报告生成器。问题是我正在尝试监控大量设备,而该供应商只创建了一次提取一个日志的请求。此请求需要设备编号,开始日期和结束日期...更糟糕的是,我们只能导出二进制Excel格式,因为de“csv”导出已损坏且他们拒绝修复它...因此我们受Excel的65 536行限制...(在我的情况下相当于3-4天的数据记录)。我无法创建新的resquest,因为只有供应商才具有必要的管理权限。
您认为通过Web GUI运行大量请求(大约800个)的最优雅方式是什么?我想我可以硬编码鼠标位置,点击事件,以及延迟和一切的击键......但必须有更好的方法。
我读到了AutoHotKey和AutoIt脚本,但他们似乎在网络上可以做的事情上受到限制。另外......我坚持使用IE6 ......但如果你知道一种涉及其他浏览器的方式,我仍然对你的答案很感兴趣。
(一旦我在本地拥有日志文件,提取数据不就成了问题)
答案 0 :(得分:1)
你可能会尝试一些事情。如果网站是html并且可以通过简单的POST或GET请求报告,那么urlib/urlib2和cookielib Python模块应该足以获取excel文档。
然后你可以试试这个:xlrd从excel中提取数据。
另外,请查看:http://pamie.sourceforge.net /。我自己从未尝试过,但看起来很有前途且易于使用。
答案 1 :(得分:0)
通常情况下,我建议不要使用IE(或任何浏览器)。请记住,Web浏览器软件只是用于发出http请求并以有意义的方式显示结果的代理程序。还有其他方法可以生成类似的http请求并处理响应。几乎每种现代语言都在其中的某个地方内置了它。这称为网刮或网刮。
但是要完成这个建议,我需要更多地了解您的编程环境:即,您想用哪种编程语言编写此脚本?
使用C#的典型示例,您只需将html结果作为字符串获取,如下所示:
new System.Net.WebClient().DownloadString("http://example.com");
然后解析字符串以查找所需的任何字段并发送另一个请求。 WebClient类还有一个.DownloadFile()
方法,您可能会发现该方法对于检索excel文件很有用。
答案 2 :(得分:0)
由于您可以使用.NET,因此应考虑使用Windows窗体WebBrowser控件。您可以自动导航到站点,按下按钮等。加载报表页面后,您可以使用代码导航HTML DOM以查找所需的数据 - 不涉及正则表达式。
我多年前做过类似的事情,从eBay中提取拍卖数据。