【问题标题】:Super-fast screen scraping techniques? [closed]超快速的屏幕抓取技术? [关闭]
【发布时间】:2010-10-10 00:46:58
【问题描述】:

我经常发现自己需要出于内部目的进行一些简单的屏幕抓取(即我使用的第三方服务仅通过 HTML 发布报告)。我现在至少有两三个案例。我可以使用 apache httpclient 并创建所有必要的屏幕抓取代码,但这需要一段时间。这是我通常的流程:

  1. 在网站上打开 Charles Proxy,看看发生了什么。
  2. 开始使用Apache HttpClient编写一些java代码,处理cookies,多个请求
  3. 使用 Jericho HTML 来处理 HTML 解析。

我希望我可以快速“记录我的会话”,然后参数化因会话而异的内容。想象一下,只是使用 Charles 来获取所有请求 HTTP,然后参数化相关的查询字符串或发布参数。瞧,我有一个可重用的 http 脚本。

有什么已经这样做了吗?我记得当我曾经在一家大公司工作时,曾经有一个我们使用的工具,称为 Mercury Interactive 的 Load Runner,它本质上是一种很好的方法来记录 http 会话并使其可重用(用于测试目的)。不幸的是,那个工具非常昂贵。

【问题讨论】:

  • 感谢您的所有回答。我认为他们都非常有价值,将帮助面临同样困境的其他人。我决定尝试 Twill,因为它看起来是一种非常简单的语言,而且它在 Python 中是跨平台的。建议的许多工具似乎也不错——尽管有一些似乎是特定于 Windows 的,而另一些似乎有更陡峭的学习曲线。

标签: html screen-scraping


【解决方案1】:

Python 和 Perl 都有一个名为 Mechanize(perl 的 WWW::Mechanize)的模块,它使得以编程方式执行浏览器行为(填写表单、处理 cookie 等)容易

所以,Python + BeautifulSoup(出色的 html/xml 解析器)+ mechanize(浏览器功能)= 超级简单/快速的爬虫

【讨论】:

  • 小问题,Mechanize 可以处理 AJAX 吗?
【解决方案2】:

我不能亲自担保,但有一个免费的 Firefox 插件:DejaClick 前几天我安装了它,并用它进行了一些补救性的录制、播放和脚本编辑活动。它在没有太多学习曲线的情况下将它们拉下来。如果您的最终目标是在 Web 浏览器中显示某些内容,那么它就足够了。

他们提供网络交易监控服务,这意味着您可以导出脚本用于其他用途,但它们可能过于专有,无法在您的网络浏览器/他们的付费服务之外使用。

http://www.dejaclick.com/

【讨论】:

    【解决方案3】:

    使用 FireFox,应该可以通过其对插件和增强功能的强大支持来实现大部分功能,但这并不意味着真正“无头”运行,而是真正的脚本浏览器。另外,我似乎记得曾经读过谷歌的 chrome 浏览器使用类似的技术来进行自动回归测试。

    【讨论】:

      【解决方案4】:

      Internet Explorer 支持浏览器帮助程序对象 (BHO)。他们可以访问 IE 的 HWND(窗口句柄)并且很容易从那里刮取像素。 IWebBrowser2 COM 接口还可以让您访问 HTTP 请求,您可以通过 IWebBrowser2::Document = IHTMLDocument / IHTMLDocument2 /IHTMLDocument3 取回已解析的 HTML 文档

      【讨论】:

        【解决方案5】:

        我使用 DomInspector 手动检查感兴趣的站点以对其结构进行参数化。然后是简单的 Apache HttpClient 和使用这个参数化结构的手工解析器。基本上,我可以通过稍微调整参数自动从任何站点提取任何信息。它类似于 SAX 解析器的工作方式,你只需要告诉它你想要开始抓取数据的标签序列。例如,谷歌有相当标准的搜索结果格式。所以,你只需运行到第三次出现的“tab”并开始从第一个“div”到结尾“/div”获取文本

        【讨论】:

          【解决方案6】:

          Selenium 将是我的第一选择,因为 IDE 通过为您“录制”会话,让您可以轻松地做很多事情。但是,如果您对它提供的功能不满意,您也可以使用名为 Beautiful Soup 的 Python 模块以编程方式浏览网站。

          【讨论】:

            【解决方案7】:

            我希望我可以快速“记录我的会话”,然后参数化因会话而异的内容。

            如果您有 Visual Studio 测试版,它的 Web 测试功能就可以做到这一点。如果您不使用 VS 或想要一个独立的工具,我在 OpenSpan 上取得了巨大的成功。它不仅仅是网络,它还包含 Windows 应用程序和 Java!

            【讨论】:

              【解决方案8】:

              HtmlUnit 是一个用 Java 编写的可编写脚本的无头浏览器。我们将它用于一些故障严重、复杂的网页,它通常做得很好。

              为了进一步简化事情,您可以在 Jython 中运行它。结果程序读起来更像是一个人如何使用浏览器的抄本,而不是努力工作。

              【讨论】:

                【解决方案9】:

                你没有提到你想用这个做什么;如果让网络浏览器重复您的操作是一种可接受的解决方案,则一种解决方案是使用 Selenium 等工具简单地为您的网络浏览器“编写脚本”。您可以使用Selenium IDE 记录您的操作,然后更改参数。

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 1970-01-01
                  • 2011-05-04
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2011-06-03
                  • 1970-01-01
                  • 1970-01-01
                  相关资源
                  最近更新 更多