我想从一个网站数据自动提取和我真的不知道从哪里开始。我们的一个供应商给我们提供了访问一些设备记录的数据通过一个“的的Business Objects 11 的”在线申请。如果你不熟悉这个在线应用程序,把它作为一个基于Web的报表生成器。问题是,我想监控大量的设备和供货商只创造了一个请求中同时提取一个日志。这个请求采用设备编号,开始日期和结束日期......更糟糕的是,我们只能导出为二进制Excel格式,因为德“CSV”出口是破产了,他们拒绝修复它...因此我们通过Excel的65 536行限制是有限的......(这简直是对数据记录的3-4天在我的情况)。我不能创建一个新的resquest因为只有供应商有必要的管理权限。

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

我读到的AutoHotkey和AutoIt的脚本,但他们似乎有限,因为他们可以在网络上做什么。此外...我坚持IE6 ......但是,如果你知道,涉及到另一个浏览器的方式,我仍然在你的答案很感兴趣。

(一旦我有日志文件在本地,提取的数据是的一个问题)

有帮助吗?

解决方案

有一些事情你可以试试。如果该网站是一个HTML和报告可以通过一个简单的POST请求或GET然后 urlib / urlib2 和cookielib Python模块应该足够抓取的Excel文档。

这时可以尝试这样: xlrd 以从Excel提取数据。

另外,看看: http://pamie.sourceforge.net /。我从来没有尝试过自己,但看起来很有希望,使用方便。

其他提示

一般情况下,我建议不是在所有使用IE(或任何浏览器)。请记住,网络浏览器软件是HTTP请求和显示有意义的方式,结果只是代理程序。还有其他的方法,你可以做类似的HTTP请求和处理响应。几乎每一个现代的语言有这种内置到它的API的地方。这就是所谓的屏幕抓取或web刮。

但要完成这个建议,我需要更多地了解你的编程环境:即在什么编程语言做你设想写这个剧本

使用C#一个典型的例子,你刚才得到的HTML结果作为字符串应该是这样的:

new System.Net.WebClient().DownloadString("http://example.com");

您然后解析字符串,找到你所需要的任何字段和发送另一个请求。 WebClient类也有,你可能会发现检索的Excel文件中有用的.DownloadFile()方法。

因为你可以使用.NET,你应该考虑使用Windows窗体WebBrowser控件。你可以自动执行它导航到该网站,请按按钮,等等。一旦报告加载页面时,您可以使用代码来浏览HTML DOM找到你想要的数据 - 不涉及正则表达式

我做了这样的事情年前,从eBay的拍卖中提取数据。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top