5
मैं कैसे nokogiri उपयोग करने के लिए सीख रहा हूँ और कुछ सवाल यह बेहतर उपयोग करने के लिए है नीचेकैसे nokogiri तरीकों .xpath और .at_xpath
require 'rubygems'
require 'mechanize'
post_agent = WWW::Mechanize.new
post_page = post_agent.get('http://www.vbulletin.org/forum/showthread.php?t=230708')
puts "\nabsolute path with tbody gives nil"
puts post_page.parser.xpath('/html/body/div/div/div/div/div/table/tbody/tr/td/div[2]').xpath('text()').to_s.strip.inspect
puts "\n.at_xpath gives an empty string"
puts post_page.parser.at_xpath("//div[@id='posts']/div/table/tr/td/div[2]").at_xpath('text()').to_s.strip.inspect
puts "\ntwo lines solution with .at_xpath gives an empty string"
rows = post_page.parser.xpath("//div[@id='posts']/div/table/tr/td/div[2]")
puts rows[0].at_xpath('text()').to_s.strip.inspect
puts
puts "two lines working code"
rows = post_page.parser.xpath("//div[@id='posts']/div/table/tr/td/div[2]")
puts rows[0].xpath('text()').to_s.strip
puts "\none line working code"
puts post_page.parser.xpath("//div[@id='posts']/div/table/tr/td/div[2]")[0].xpath('text()').to_s.strip
puts "\nanother one line code"
puts post_page.parser.at_xpath("//div[@id='posts']/div/table/tr/td/div[2]").xpath('text()').to_s.strip
puts "\none line code with full path"
puts post_page.parser.xpath("/html/body/div/div/div/div/div/table/tr/td/div[2]")[0].xpath('text()').to_s.strip
- कोड के आधार पर मेरे पास आया उपयोग करने के लिए // या/xpath में? @AnthonyWJones कहता है कि 'एक अपरिवर्तित // // का उपयोग इतना अच्छा विचार नहीं है
- मुझे किसी भी काम कर रहे xpath से किसी को हटा देना था अन्यथा मुझे' शून्य 'परिणाम मिला। चीजें काम करने के लिए xpath से तत्व को निकालना संभव है?
- क्या मुझे पूर्ण xpath का उपयोग न करने पर डेटा निकालने के लिए दो बार .xpath का उपयोग करना होगा?
- क्यों मैं डेटा निकालने के लिए .at_xpath काम नहीं कर सकता? यह अच्छी तरह से काम करता है here क्या अंतर है? तो यह और अधिक महंगा है
/
- करने के लिए आप प्लेसहोल्डर के रूप में उपयोग कर सकते हैं
*
तुलना
@ सिमोन कार्लेटी: इसके लिए आपको थक गया। शायद मेरे सभी प्रश्न आते हैं क्योंकि मुझे नहीं पता कि http://nokogiri.org पर दस्तावेज़ कैसे पढ़ा जाए, मुझे नहीं पता कि नोड पर टेक्स्ट विधि को कॉल करने के बारे में कुछ भी कैसे प्राप्त करें। इसके बारे में और लिखना संभव होगा। मुझे पहले से ही मेरी लिपि धीमी गति से मिलती है, इसे तेज़ी से बनाना बहुत अच्छा होगा। – Radek
मैंने पाया कि एक XPath प्लेसहोल्डर वास्तविक xpath अभिव्यक्ति है। तो प्लेसहोल्डर के रूप में * का उपयोग करने का क्या अर्थ है? – Radek
* किसी भी नोड का मतलब है। उदाहरण के लिए, '/ node/foo/one' और'/node/bar/one' में, '/ node/*/one' दोनों पथों से मेल खाता है। –