【问题标题】:autogenerate HTTP screen scraping Java code自动生成 HTTP 屏幕抓取 Java 代码
【发布时间】:2010-09-30 04:34:24
【问题描述】:

我需要筛选从网站上抓取一些数据,因为无法通过他们的网络服务获得这些数据。当我以前需要这样做时,我自己使用 Apache 的 HTTP 客户端库编写了 Java 代码,以进行相关的 HTTP 调用来下载数据。我通过在浏览器中单击相关屏幕并使用Charles web proxy 记录相应的 HTTP 调用来找出我需要进行的相关调用。

正如您可以想象的那样,这是一个相当乏味的过程,我想知道是否有一个工具可以实际生成与浏览器会话相对应的 Java 代码。我希望生成的代码不会像手动编写的代码那样漂亮,但我总是可以在之后整理它。有谁知道这样的工具是否存在? Selenium 是我知道的一种可能性,但我不确定它是否支持这个确切的用例。

谢谢, 唐

【问题讨论】:

    标签: java http selenium screen-scraping


    【解决方案1】:

    我还会为 HtmlUnit 添加 +1,因为它的功能非常强大:如果您需要“好像真正的浏览器正在抓取并使用页面”的行为,那绝对是最好的选择。 HtmlUnit 执行(如果您愿意)页面中的 Javascript。

    它目前为所有主要的 Javascript 库提供 full featured support,并将使用它们执行 JS 代码。与此相对应,您可以在测试中以编程方式获取页面中 Javascript 对象的句柄。

    但是,如果您尝试做的事情的范围更小,更多的是阅读一些 HTML 元素并且您不太关心 Javascript,那么使用 NekoHTML 就足够了。它类似于JDom 以编程方式而不是 XPath 方式访问树。您可能需要使用 Apache 的 HttpClient 来检索页面。

    【讨论】:

      【解决方案2】:

      manageability.org 博客有一个条目,其中列出了一大堆 Java 网页抓取工具。但是,我现在似乎无法访问它,但我确实在 Google 的缓存 here 中找到了纯文本表示。

      【讨论】:

      【解决方案3】:

      您应该看看HtmlUnit - 它是为测试网站而设计的,但非常适合屏幕抓取和浏览多个页面。它负责处理 cookie 和其他与会话相关的内容。

      【讨论】:

        【解决方案4】:

        我想说我个人喜欢使用 HtmlUnit 和 Selenium 作为我最喜欢的两个屏幕抓取工具。

        【讨论】:

          【解决方案5】:

          一个名为The Grinder 的工具允许您通过其代理编写与站点的会话脚本。输出为 Python(可在 Jython 中运行)。

          【讨论】:

          • 如果输出是 Java 代码,那正是我想要的。我知道你可以通过 Jython 在 JVM 上运行 Python,但我需要 Java 代码。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-02-11
          • 1970-01-01
          • 2012-05-30
          • 2019-08-16
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多