Javascript 在JS改变DOM之后,我如何刮取一些东西?

Javascript 在JS改变DOM之后,我如何刮取一些东西?,javascript,ruby,screen-scraping,nokogiri,mechanize,Javascript,Ruby,Screen Scraping,Nokogiri,Mechanize,我正在使用Mechanize,尽管如果Mechanize不能做到,我对Nokogiri持开放态度 我想在所有脚本加载后,而不是在加载之前,对页面进行刮削 我该怎么做呢?我对mechanize或nokogiri一无所知,所以我不能具体评论它们。然而,我认为只有使用更多的JavaScript才能解决修改后获取JavaScript的问题。为了获取新生成的HTML,您需要获取document元素的.innerHTML。这可能很棘手,因为您必须将js注入页面 据我所知,实现这一点的唯一方法是编写一个Fir

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

我想在所有脚本加载后,而不是在加载之前,对页面进行刮削


我该怎么做呢?

我对mechanize或nokogiri一无所知,所以我不能具体评论它们。然而,我认为只有使用更多的JavaScript才能解决修改后获取JavaScript的问题。为了获取新生成的HTML,您需要获取document元素的.innerHTML。这可能很棘手,因为您必须将js注入页面

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


如果您对插件感兴趣,可以从这里开始:http://anthonystechblog.wordpress.com/category/internet/firefox/

Nokogiri和Mechanize不是完整的web浏览器,不在浏览器模型DOM中运行JavaScript。您希望使用类似或的东西,它允许您使用Ruby来控制实际的web浏览器。

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

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

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

b.goto URL

doc=Nokogiri::HTML(b.HTML)


加载脚本后,生成的文档将从何时开始。phantomjs很好,因为不需要加载浏览器。

与其从头开始运行自己的插件,Greasemonkey可能可以做到。如果你想让一个真正的启用JavaScript的浏览器自动运行,但没有可见的窗口,可以尝试像(capybara webkit)[或(phantomjs)[(还有其他浏览器)这样的无头浏览器@echristopherson谢谢;它们分别是和(固定标记链接)。