JS更改DOM后如何抓取某些内容

How do I scrape something after JS has changed the DOM?

本文关键字:抓取 DOM 更改 何抓取 JS      更新时间:2023-09-26
我正在使用Mechanize,

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

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

我该怎么做?

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

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

b.goto URL

doc = Nokogiri::HTML(b.html)

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

Nokogiri 和 Mechanize 不是完整的 Web 浏览器,也不会在浏览器模型 DOM 中运行 JavaScript。你想使用像Watir或Selenium这样的东西,它们允许你使用Ruby来控制实际的Web浏览器。

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

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

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

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