繁体   English   中英

JS改变DOM后如何刮掉一些东西?

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

我正在使用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。 您想使用WatirSelenium之类的东西,它允许您使用Ruby来控制实际的Web浏览器。

除了watir-webdriver和capybara-webkit之外, 快速是一个很好的选择,虽然它只是jruby。

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM