2016-05-12 26 views
0

當我在另一臺機器上運行我的代碼時,出現以下錯誤: ruby​​:symbol lookup error:/usr/local/ruby/lib/ruby/gems/2.1.0/gems/nokogiri-1.6.7.2/ LIB /引入nokogiri/nokogiri.so:未定義的符號:xmlNextElementSibling如何在不調用「next_element」方法的情況下使用Nokogiri選擇下一個元素?

當進程開始,我得到以下警告: 警告:引入nokogiri始建反對的libxml版本2.7.8,但動態加載2.6.30 我目前無法更新nokogiri,所以我試圖深入研究源代碼,問題似乎與Nokogiri調用的next_element方法有關,該方法在我的機器上運行,但在另一臺機器上爆炸。 因此,我的問題:我如何輕鬆選擇下一個HTML元素(特別是表中的下一個「tr」)?

這是我使用

def get_weight(spot) 

     frame = spot.at_css("table[id='1']").css("tr")[1] 
     starter = frame.at('tr:contains("D7r5")') 
     return nil if starter == nil 
     starter = starter.next_element 
     peso = [] 
     until starter.css("td")[1].nil?   
     data = starter.css("td")[1].inner_html.gsub(/\t{0..100}/, "").strip 
     ndecimal = data.scan(/[0-9]{1,4},?.?[0-9]{0,3}/).last.gsub(",", ".") 
     nmeasure = data.scan(/[kK][Gg]|\s[g]\s|[g]/).last 
     case nmeasure 
     when (/[kK][Gg]/) 
      peso << ndecimal.to_f 
     when (/g|\s[g]\s|[g]/) 
      peso << ndecimal.to_f/1000 
     end 
     starter.next_element.nil? ? break : starter = starter.next_element 
     end 
     return peso.max == 0 ? nil : peso.max 
    end 
+0

你能分享你的代碼嗎? – Andrew

+1

不確定這是否適用於您的情況,但用於'next_element'的XPath相當於'following-sibling :: * [1]' – har07

+1

@ har07謝謝!正是我在找什麼! 請將它作爲答案發布,我會接受它! – Jack

回答

2

的XPath等價的代碼next_elementfollowing-sibling::*[1]。或者只是following-sibling::*,如果XPath將使用諸如at_xpath()之類的某些事件來執行,默認情況下它將只返回第一個匹配的節點。

相關問題