Tag: nokogiri

如何使用Nokogiri导航DOM

我正在尝试填充变量parent_element_h1和parent_element_h2 。 谁能帮助我使用Nokogiri将我需要的信息输入这些变量? require ‘rubygems’ require ‘nokogiri’ value = Nokogiri::HTML.parse(<<-HTML_END) " A Foo B C Bar D E F ” HTML_END parent = value.css(‘body’).first # start_here is given: A Nokogiri::XML::Element of the with the id ‘X2 start_here = parent.at(‘div.block#X2’) # this should be a Nokogiri::XML::Element of the nearest, previous h1. # in this example it’s […]

使用Nokogiri将div嵌套在div元素中

对于以下HTML,我想解析它并使用Nokogiri得到以下结果。 event_name = “folk concert 2” event_link = “http://www.douban.com/event/12761580/” event_date = “20th,11,2010″ 我知道doc.xpath(‘//div[@class=”nof clearfix”]’)可以获取每个div元素,但是我应该如何继续获取每个属性,例如event_name ,尤其是date ? HTML folk concert 2 Date:25th,11,2010 folk concert Date:10th,11,2010

是否有与Nokogiri类似的解析Ruby代码的东西?

Nokogiri太棒了。 我可以做像#css(‘.bla’) ,它将返回第一个匹配的元素。 现在我们需要对Ruby源代码进行一些解析 – 查找类中的所有方法等。我们使用的是ruby_parser gem,但它只是梳理你的源代码并吐出S表达式。 对于这些S表达式有什么像Nokogiri这样的东西可以做“返回第一个方法的S表达式,发现名为’foo’”吗?

使用Ruby获取网页的所有链接

我正在尝试使用Ruby检索网页的每个外部链接。 我正在使用String.scan与此正则表达式: /href=”https?:[^”]*|href=’https?:[^’]*/i 然后,我可以使用gsub删除href部分: str.gsub(/href=[‘”]/) 这很好用,但我不确定它在性能方面是否有效。 这可以使用,或者我应该使用更具体的解析器(例如nokogiri)? 哪种方式更好? 谢谢!

如何让Nokogiri解析并返回XML文档?

这是一些奇怪的例子: #!/usr/bin/ruby require ‘rubygems’ require ‘open-uri’ require ‘nokogiri’ print “without read: “, Nokogiri(open(‘http://weblog.rubyonrails.org/’)).class, “\n” print “with read: “, Nokogiri(open(‘http://weblog.rubyonrails.org/’).read).class, “\n” 运行此返回: without read: Nokogiri::XML::Document with read: Nokogiri::HTML::Document 没有read返回XML,并且它是HTML? 网页被定义为“XHTML过渡”,所以起初我认为Nokogiri必须从流中读取OpenURI的“内容类型”,但返回’text/html’ : (rdb:1) doc = open((‘http://weblog.rubyonrails.org/’)) (rdb:1) doc.content_type “text/html” 这是服务器返回的内容。 所以,现在我想弄清楚为什么Nokogiri会返回两个不同的值。 它似乎不是解析文本并使用启发式方法来确定内容是HTML还是XML。 该页面指向的ATOM提要也发生了同样的事情: (rdb:1) doc = Nokogiri.parse(open(‘http://feeds.feedburner.com/RidingRails’)) (rdb:1) doc.class Nokogiri::XML::Document (rdb:1) doc = Nokogiri.parse(open(‘http://feeds.feedburner.com/RidingRails’).read) (rdb:1) doc.class Nokogiri::HTML::Document […]

我无法从Nokogiri解析的字符串中删除空格

我无法从字符串中删除空格。 我的HTML是: Cena pro Vás: 139 Kč 我的代码是: #encoding: utf-8 require ‘rubygems’ require ‘mechanize’ agent = Mechanize.new site = agent.get(“http://www.astratex.cz/podlozky-pod-raminka/doplnky”) price = site.search(“//p[@class=’your-price’]/strong/text()”) val = price.first.text => “139 ” val.strip => “139 ” val.gsub(” “, “”) => “139 ” gsub , strip等不起作用。 为什么,我该如何解决这个问题? val.class => String val.dump => “\”139\\u{a0}\”” ! val.encoding => # __ENCODING__ => # […]

如何向Nokogiri节点添加属性?

我正在尝试向现有的Nokogiri节点添加属性。 我做的是这样的: node.attributes[‘foobar’] = Nokogiri::XML::Attr.new(‘foo’, ‘bar’) 但我得到错误: TypeError Exception: wrong argument type String (expected Data) 什么是Data数据类型,以及如何向Nokogiri对象添加属性? 谢谢!

Ruby 2.0中的Nokogiri

当我在Ruby 2.0中require ‘nokogiri’时,它有一个错误 `require’: cannot load such file — nokogiri/2.0/nokogiri (LoadError) nokogiri还不支持Ruby 2.0吗? 我可以在gem list看到nokogiri

如何在Nokogiri中处理404未找到的错误

我正在使用Nokogiri来抓取网页。 几个url需要被猜到,并且当它们不存在时返回404未找到的错误。 有没有办法捕获此exception? http://yoursite/page/38475 #=> page number 38475 doesn’t exist 我尝试了以下哪些不起作用。 url = “http://yoursite/page/38475” doc = Nokogiri::HTML(open(url)) do begin rescue Exception => e puts “Try again later” end end

如何将子项添加到特定位置的节点?

我有一个节点有两个孩子:HTML文本和HTML元素。 Installation on server¶ 在这种情况下,HTML文本是: Installation on server 和HTML元素: anchor; 然后我创建一个这样的节点: span_node = Nokogiri::HTML::Node.new(‘span’,doc) span_node[‘class’] = ‘edit-section’ link_node = Nokogiri::HTML::Node.new(‘a’,doc) link_node[‘href’] = “/wiki/#{page_id}/#{@page.title}/edit?section=#{section_index}” link_node[‘class’] = ‘icon icon-edit’ link_node.content = ‘mylink’ span_node.add_child(link_node) 现在,要将上述节点添加到主节点,我使用以下内容: node.add_child(span_node) 这会在末尾附加span节点。 如何将span_node放在所有孩子面前?