【发布时间】:2016-03-27 01:51:03
【问题描述】:
我正在尝试使用 OpenUri 和 Nokogiri 从 HTML 源中获取样式内容。
require 'open-uri'
require 'nokogiri'
require 'css_parser'
url = open('https://google.com')
html = Nokogiri::HTML(url)
css = CssParser::Parser.new
css.add_block!(html.search('style#gstyle').text)
这将返回 nil,但 Google 页面的 HTML 包含 id="gstyle"。这是输出结果的图像:
- 为什么在此示例中的 Google HTML 页面与 OpenUri 返回的页面不同?
- 如何找到这个标签
style#gstyle? - 为什么 Firebug 能看到正确的 HTML 文档而 OpenUri 却没有?
【问题讨论】:
-
3、怎么知道firebug的页面是正确的而open-uri的页面不是?
-
忽略3中看到的这种不对称性,问题1和问题3有什么区别?
-
不要相信基于浏览器的工具可以准确地显示 HTML。如果您想知道页面真正是什么样子,请使用
curl或wget或OpenURI 直接访问源并查看返回的内容。浏览器就像小狗一样,试图通过渲染一些东西来取悦我们,即使这意味着改变 HTML。任何使用浏览器呈现的 HTML 的东西都会出错,包括 Firebug。而且,顺便说一句,如果您还想查看真正的源代码,可以在命令行中使用nokogiri some_url。 -
好的,我试试。谢谢。
标签: html ruby nokogiri open-uri css-parsing