JS更改DOM后如何抓取某些内容
How do I scrape something after JS has changed the DOM?
尽管如果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/
- 同源策略目的|用户数据与基本页面数据|客户端页面抓取
- VBA正在抓取不在HTML源文件中的生成内容
- 尝试使用Node.js动态路由从IMDB中抓取电影内容.但是在我的output.json文件中没有定义
- 如何从网站上抓取链接和图片
- 用jquery抓取图像SRC-attr
- Javascript Regex-从价格中抓取分隔符
- 使用网络服务器的IP地址而不是域名对其进行屏幕抓取
- Javascript:如何从URL中抓取片段并将其写入一些PHP
- 使用htmlunit抓取动态网页
- 无法在 IE 7/8 中使用 parentNode 抓取 DOM 节点
- JS更改DOM后如何抓取某些内容
- 从元素背景中抓取图像元素作为DOM资源
- Chrome扩展:抓取DOM内容进行解析
- jquery从dom类中抓取所有项,stopPropagation已经实现
- 从DOM中抓取一个特定的列表,同时忽略另一个列表
- 如何在Angular.js中编写指令来抓取dom中的数据
- 在浏览器中,使用CSS选择器从包含HTML标记的字符串中抓取数据,而不创建DOM元素
- 抓取网页没有进行ajax调用,但数据不在DOM中
- 需要一些关于创造性的DOM抓取确认框的想法
- JS抓取dom中任何带有双引号的文本