12

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

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

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

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

4

9 回答 9

9

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

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

于 2009-02-26T11:40:47.513 回答
4

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

于 2009-02-26T11:37:13.483 回答
3

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

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

于 2009-02-26T11:46:06.317 回答
3

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

于 2009-04-16T20:25:04.113 回答
2

Python 和 Perl 都有一个名为 Mechanize 的模块(WWW::Mechanize for perl),它可以轻松地以编程方式执行浏览器行为(填写表单、处理 cookie 等)。

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

于 2009-04-22T12:24:54.543 回答
1

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

于 2009-04-20T18:43:53.853 回答
1

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

于 2009-04-20T15:02:04.543 回答
1

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

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

http://www.dejaclick.com/

于 2009-04-21T03:52:03.147 回答
1

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

于 2009-04-18T22:03:10.490 回答