मैं नोकोगिरी का उपयोग करके निम्नलिखित ब्लॉक की खोज कैसे कर सकता हूं:

<div id="live_list_cat_16" class="football-block sport-block" style="display:block;">
</div>
-1
KOB 8 जिंदा 2017, 20:22
1
 – 
the Tin Man
9 जिंदा 2017, 23:50

2 जवाब

ये कोशिश करें

doc.search('div#foo.bar')

यह कैसे काम करता है?

  • search और at विधि दोनों ही CSS प्रश्नों को स्वीकार करते हैं
  • div#foo आईडी के साथ एक div ढूँढता है foo
  • div.bar कक्षा के साथ एक div ढूँढता है bar
0
akuhn 8 जिंदा 2017, 21:12
मैंने यह कोशिश की है और यह काम नहीं करता है। किसी कारण से, जब मैं पृष्ठ को खोजता हूं, तो ऐसा नहीं लगता कि कुछ भी आंतरिक ब्लॉकों की एक निश्चित 'गहराई' से गुजरा है। यहां HTML का एक अंश दिया गया है। अगर मैं ऊपर और ऊपर .in-play-odds तक किसी भी वर्ग की खोज करता हूं, तो यह उसे वापस कर देता है। हालांकि, यह .in-play-odds के लिए कोई उपवर्ग नहीं ढूंढ सकता है और यदि मैं .in-play-odds खोजता हूं, तो यह <div id="live_list_container" class="in-play-odds"> </div> के रूप में एक खाली ब्लॉक देता है। कोई विचार है कि यह इस ब्लॉक के भीतर क्यों नहीं खोज सकता है?
 – 
KOB
9 जिंदा 2017, 00:21
हो सकता है कि ये div तत्व पेज लोड होने के बाद जावास्क्रिप्ट के साथ गतिशील रूप से बनाए गए हों। क्या आपने जांच की है कि वे html स्ट्रिंग में मौजूद हैं जो आपको नोकोगिरी को देते हैं?
 – 
akuhn
9 जिंदा 2017, 00:30
मुझे लगता है कि आप उनके बारे में सही हो सकते हैं कि उन्हें गतिशील रूप से जोड़ा जा रहा है। अगर ऐसा है, तो क्या नोकोगिरी का उपयोग करके उन्हें परिमार्जन करने का कोई तरीका नहीं है?
 – 
KOB
9 जिंदा 2017, 00:36
शायद शायद नहीं। शायद एक एपीआई कॉल है जो डेटा को JSON या HTML के रूप में प्राप्त करती है, देव उपकरण में नेटवर्क टैब से जांचें ...
 – 
akuhn
9 जिंदा 2017, 00:38

आप #some_id को CSS चयनकर्ता के रूप में उपयोग कर सकते हैं।

require 'nokogiri'

doc = Nokogiri::HTML(<<EOT)
<html>
  <body>
    <div id="foo" class="bar">text</div>
    <div id="foo2" class="bar">more_text</div>
  </body>
</html>
EOT

doc.search('#foo').to_html # => "<div id=\"foo\" class=\"bar\">text</div>"
doc.search('div.bar').to_html # => "<div id=\"foo\" class=\"bar\">text</div><div id=\"foo2\" class=\"bar\">more_text</div>"

याद रखें, किसी विशेष आईडी को दस्तावेज़ में केवल एक बार मौजूद रहने की अनुमति है।

0
the Tin Man 9 जिंदा 2017, 23:55