7

我正在使用 Mechanize,尽管如果 Mechanize 做不到,我对 Nokogiri 持开放态度。

我想在所有脚本加载后而不是预先加载页面。

我该怎么做?

4

4 回答 4

6

我认为 Nokogiri、Watir 和 PhantomJs 是一个不错的选择:

b = Watir::Browser.new(:phantomjs)

b.goto URL

doc = Nokogiri::HTML(b.html)

生成的文档将来自脚本加载后的时间。phantomjs 很好,因为不需要加载浏览器。

于 2013-08-14T08:03:23.060 回答
4

Nokogiri 和 Mechanize 不是完整的 Web 浏览器,并且不在浏览器模型 DOM 中运行 JavaScript。您想使用WatirSelenium之类的东西,它们允许您使用 Ruby 来控制实际的 Web 浏览器。

于 2012-05-15T21:51:13.177 回答
2

除了 watir-webdriver 和 capybara-webkit,celerity一个不错的选择,尽管它只是 jruby。

于 2012-05-16T09:19:20.230 回答
0

我对机械化或nokogiri一无所知,所以我无法具体评论它们。但是,修改后获取 JavaScript 的问题我认为只能通过更多的 JavaScript 来解决。为了获取新生成的 HTML,您需要获取文档元素的 .innerHTML。这可能很棘手,因为您必须将 js 注入页面。

我所知道的唯一方法是编写一个 FireFox 插件。使用插件,您可以在页面上运行 JavaScript,即使它不是您的页面。对不起,我没有更多的帮助,我希望这有助于你走上正确的道路。

如果您对插件感兴趣,这是一个开始的地方:http://anthonystechblog.wordpress.com/category/internet/firefox/

于 2012-05-15T21:46:05.963 回答