自动化浏览器导航和数据提取

时间:2009-07-08 15:39:53

标签: web-applications import automation web-scraping

我正在尝试从网站自动提取数据,我真的不知道从哪里开始。我们的一家供应商通过“ Business Objects 11 ”在线应用程序为我们提供了一些设备记录数据。如果您不熟悉此在线应用程序,请将其视为基于Web的报告生成器。问题是我正在尝试监控大量设备,而该供应商只创建了一次提取一个日志的请求。此请求需要设备编号,开始日期和结束日期...更糟糕的是,我们只能导出二进制Excel格式,因为de“csv”导出已损坏且他们拒绝修复它...因此我们受Excel的65 536行限制...(在我的情况下相当于3-4天的数据记录)。我无法创建新的resquest,因为只有供应商才具有必要的管理权限。

您认为通过Web GUI运行大量请求(大约800个)的最优雅方式是什么?我想我可以硬编码鼠标位置,点击事件,以及延迟和一切的击键......但必须有更好的方法。

我读到了AutoHotKey和AutoIt脚本,但他们似乎在网络上可以做的事情上受到限制。另外......我坚持使用IE6 ......但如果你知道一种涉及其他浏览器的方式,我仍然对你的答案很感兴趣。

(一旦我在本地拥有日志文件,提取数据就成了问题)

3 个答案:

答案 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中提取拍卖数据。