我正在使用Mechanize,虽然如果Mechanize不能这样做,我会对Nokogiri持开放态度。
我希望在加载所有脚本之后抓取页面而不是事先。
我该怎么做?
答案 0 :(得分:6)
对于Nokogiri,Watir和PhantomJs,我认为这是一个很好的选择:
b = Watir::Browser.new(:phantomjs)
b.goto URL
doc = Nokogiri::HTML(b.html)
生成的文档将来自脚本加载后的时间。而phantomjs很不错,因为不需要加载浏览器。
答案 1 :(得分:4)
Nokogiri和Mechanize不是完整的网络浏览器,也不会在浏览器模型DOM中运行JavaScript。您希望使用Watir或Selenium之类的东西,它允许您使用Ruby来控制实际的Web浏览器。
答案 2 :(得分:2)
除了watir-webdriver和capybara-webkit之外,celerity是一个不错的选择,虽然它只是jruby。
答案 3 :(得分:0)
我对机械化或nokogiri一无所知所以我不能专门评论它们。但是,在修改JavaScript之后获取JavaScript的问题是我认为只能通过更多JavaScript来解决的问题。为了获得新生成的HTML,您需要获取文档元素的.innerHTML。这可能很棘手,因为您必须将js注入页面。
我知道完成此任务的唯一方法是编写FireFox插件。使用插件,您可以在页面上运行JavaScript,即使它不是您的页面。对不起,我没有更多的帮助,我希望这有助于让你走上正确的道路。
如果您对插件感兴趣,可以从这里开始:http://anthonystechblog.wordpress.com/category/internet/firefox/