繁体   English   中英

Nokogiri::HTML(html_content) 与 Nokogiri::HTML.parse(html_content) 有什么区别

[英]What is the difference in Nokogiri::HTML(html_content) vs Nokogiri::HTML.parse(html_content)

我在互联网上搜索并找不到它们之间的区别。

没有什么。 它们都是Nokogiri::HTML::Document.parse的便捷方法。

这是Nokogiri.HTML即。 Nokogiri::HTML

module Nokogiri
  class << self
    ###
    # Parse HTML.  Convenience method for Nokogiri::HTML::Document.parse
    def HTML thing, url = nil, encoding = nil, options = XML::ParseOptions::DEFAULT_HTML, &block
      Nokogiri::HTML::Document.parse(thing, url, encoding, options, &block)
    end
  end

Nokogiri::HTML.parse

module Nokogiri
  module HTML
    class << self
      ###
      # Parse HTML.  Convenience method for Nokogiri::HTML::Document.parse
      def parse thing, url = nil, encoding = nil, options = XML::ParseOptions::DEFAULT_HTML, &block
        Document.parse(thing, url, encoding, options, &block)
      end)

很难弄清楚你尝试了什么,但这里有一个简单的测试,可以向你展示两者之间的差异:

require 'nokogiri'

Nokogiri::HTML('<p>').to_html
# => "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\" \"http://www.w3.org/TR/REC-html40/loose.dtd\">\n" +
#    "<html><body><p></p></body></html>\n"

Nokogiri::HTML.parse('<p>').to_html
# => "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\" \"http://www.w3.org/TR/REC-html40/loose.dtd\">\n" +
#    "<html><body><p></p></body></html>\n"

或者,甚至更好:

Nokogiri::HTML('<p>').to_html == Nokogiri::HTML.parse('<p>').to_html
# => true

如果使用.parse 稍微快一点,有什么想法吗?

不难发现:

require 'fruity'
require 'nokogiri'

compare do
  nokogiri_html { Nokogiri::HTML('<p>').to_html }
  nokogiri_html_parse { Nokogiri::HTML.parse('<p>').to_html }
end

# >> Running each test 128 times. Test will take about 1 second.
# >> nokogiri_html is similar to nokogiri_html_parse

如果一个稍微快一点,那就可以忽略不计了。 有关说明,请参阅Fruity 文档

暂无
暂无

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

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