最近在写 RUBY,遇到了Nokogiri 这个东西,乍一看,不知道是什么?作用是啥?搜索了很多文档,终于搞明白了。
Nokogiri 也就是我们所说的一种解析器,可以解析HTML/XML,获取目标data,解析后,返回结果
1.从字符串读取
1 html_doc = Nokogiri::HTML("<html><body><h1>Mr. Belvedere Fan Club</h1></body></html>") 2 xml_doc = Nokogiri::XML("<root><aliens><alien><name>Alf</name></alien></aliens></root>")
变量 html_doc
与 xml_doc
是Nokogiri 对象1, 具有各种属性与方法,自己查
2.从文件读取
无需读取文件到字符串. Nokogiri会进行这项工作.
1 doc = File.open("blossom.xml") { |f| Nokogiri::XML(f) }
3.从网络读取
1 require 'open-uri' 2 doc = Nokogiri::HTML(open("http://www.threescompany.com/"))
解析选项
Nokogiri提供了一些影响解析方式的选项. 以下是最常用的选项:
NOBLANKS
- Remove blank nodesNOENT
- Substitute entitiesNOERROR
- Suppress error reportsSTRICT
- Strict parsing; raise an error when parsing malformed documentsNONET
- Prevent any network connections during parsing. Recommended for parsing untrusted documents.
用法:
1 doc = Nokogiri::XML(File.open("blossom.xml")) do |config| 2 config.strict.nonet 3 end
或
1 doc = Nokogiri::XML(File.open("blossom.xml")) do |config| 2 config.options = Nokogiri::XML::ParseOptions::STRICT | Nokogiri::XML::ParseOptions::NONET 3 end