【问题标题】:Getting data from a browser by screen-scraping通过屏幕抓取从浏览器获取数据
【发布时间】:2012-11-03 07:44:12
【问题描述】:

我已经解决了几个相关的问题,但它们没有包含我正在寻找的答案。所以,这是我的问题:

我的工作场所有几个 Web 应用程序,它们是使用不同的框架编写的,而且作者早就去要求更新功能了。因此,我每天都必须通过同样艰苦的操作序列才能获得,这相当于几千字节的文件大小。

我尝试解析页面源代码,但作者的编程技术无处不在。有些人甚至故意隐藏代码以不让数据显示为文本,并且没有理由这样做,因为他们编写的代码是公司资产。长话短说,我意识到如果我可以复制和粘贴这些页面的文本内容,我可以比解析页面源来获取文本更容易处理这些数据(这有时是完全不可能的)

所以,我现在正在寻找一个浏览器插件(在 windows 或 linux 环境中)或 windows 或 linux 上基于文本的等效工具,它们将加载这些页面并将屏幕上的文本保存到文件中调用。

尽管我很努力,但我还是空手而归。

我不想使用第三方屏幕抓取网站的服务,因为这些数据属于公司机密,外部各方无法访问。一切都必须在客户端发生,因为我无法访问这些应用程序正在运行的服务器(主要是 Windows 前端的 IIS 和后端的 oracle db。正如我之前解释的那样,中间层是任何人的狂野猜测,从原生 oracle 应用程序到 weblogic 到 tomcat 以及一些内部开发的 java/javascript 东西。

提前感谢所有帮助

【问题讨论】:

    标签: browser screen-scraping


    【解决方案1】:

    这样的事情怎么样:http://www.nirsoft.net/utils/htmlastext.html 将 HTML 页面转换为文本的免费软件

    【讨论】:

    • 你有没有亲身体验过这个?大多数独立应用程序只是尝试剥离页面源代码的 html 部分并为您提供其余部分。我的页面是大量的 javascript,正如我所说,有些东西是故意模糊的。到目前为止,刮屏的唯一方法是用鼠标选择浏览器窗口上的文本,然后按 ctrl-c 复制它,然后将其粘贴到记事本会话中。
    • 嗨,我没有这方面的亲身经历。但是仔细考虑你的问题,如果页面是通过 Javascript 呈现的,那么像 Greasemonkey 这样的东西是否可以让你编写额外的脚本来从 javascript 填充的元素中获取值?然后您可以通过 Ajax 将收集到的值提交到另一个 Web 表单,瞧,您已经获得了数据!
    • aaah ...那个greasemonkey脚本很可能是我真正需要的。问题是,我既不精通 Javascript,也不知道如何编写油脂猴脚本来提取这些值。我希望,其他人已经这样做了,我可以重复使用他们的工作。
    • 在我看来,由于每个网页都不同,因此不可能编写一个包罗万象的脚本来处理这个问题。您需要首先检查相关页面的来源,以识别要从中抓取数据的所有 html 元素,然后编写一个 javascript 函数来提取数据就很容易了。您是否有权访问网页代码,以便将 jQuery 库添加到包含的脚本中?如果是这样,添加一个简单的 $(document).ready 函数将非常容易,该函数读取值并通过您选择的 $.ajax() 调用页面提交它们。
    • 否则,greasemonkey 将是要走的路。只需引用所需的 HTML 元素即可检索其值或 innerHTML。
    【解决方案2】:

    任何链接、lynx 或 w3m 都可以满足您的需求,它们是文本浏览器,您可以从网页中转储文本,例如:

    w3m -dump http://www.google.com > g.txt
    

    【讨论】:

    • 这本来是我要找的,但是代码模糊的页面会吐出在现代浏览器下不会显示的文本,使输出无用。就像,有一个页面从数据库中提取密码并逐个字符地吐出它们,中间有未使用的字符。你看一下输出,比如 chrome,你会看到一个密码,你可以用鼠标突出显示和复制它。当您转储 lynx 输出时,您看到的是所有字符,可用和不可用,使输出无用。我认为是因为 lynx 不懂 javascript 和样式。
    【解决方案3】:

    在寻找了一年多的答案后,我意识到,只要我使用 windows,它的现代版本,即 autohotkey 是我的救星。

    我打开网页,最大化它,放置我的光标(mousemove,x,y)然后左键单击(mouseclick,L)然后发送 ctrl-A,然后是 ctrl-C。

    瞧!一切都在剪贴板中。然后我激活我的 unix 会话(winactivate PuTTY)并发送适当的按键命令来启动我选择的编辑器(即 vi),最后发送一个 shift-Insert 以将剪贴板粘贴到我的文档中。然后保存并退出当然。

    作为额外的奖励,在我的文档被保存后,我可以调用我选择的脚本来解析这个文件并将我感兴趣的部分返回给我。

    我知道这不是防弹的,但就我的目的而言,它在很大程度上有帮助。事实上,我可以用这种方法为所欲为。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多