c#
  • html
  • xpath
  • html-agility-pack
  • web-scraping
  • 2010-10-02 14 views 10 likes 
    10

    मैं ऐसी वेबसाइट स्क्रैप कर रहा हूं जो जावास्क्रिप्ट का उपयोग एचटीएमएल एजिलिटी पैक के साथ वेबसाइट की सामग्री को गतिशील रूप से पॉप्युलेट करने के लिए करता है।एचटीएमएल एजिलिटी पैक: टिप्पणी नोड

    असल में, मैं XPATH "\\div[@class='PricingInfo']" खोज रहा था, लेकिन उस div नोड को जावास्क्रिप्ट के माध्यम से डोम में लिखा जा रहा था।

    इसलिए, जब मैं एचटीएमएल एजिलिटी पैक के माध्यम से पृष्ठ लोड करता हूं तो उपर्युक्त वर्णित XPATH नहीं मिल सकता है।

    यह पता चला है कि एक विशेष स्क्रिप्ट ब्लॉक से पहले एक टिप्पणी है जिसे मैं पार्स करना चाहता हूं।

    <!--Module 328 Buying Options Table--> 
    <script type="text/javascript" language="JavaScript"> 
        var data = { 
         price: 30.00 
        } 
    </script> 
    

    इस साइट के लिए, कई स्क्रिप्ट अवरोध कर रहे हैं और इसलिए मैं निष्कर्ष यह स्वत: जनरेट टिप्पणी <!--Module 328 Buying Options Table--> और उस नोड के भाई द्वारा उसे संक्षिप्त करने के लिए सही स्क्रिप्ट ब्लॉक होगा की आवश्यकता होगी।

    कोई विचार है कि मैं किसी विशेष टिप्पणी के लिए कैसे खोज सकता हूं और फिर आसन्न स्क्रिप्ट ब्लॉक प्राप्त कर सकता हूं?

    धन्यवाद!

    +1

    +1 नियमित अभिव्यक्तियों का उपयोग न करने के लिए! – TrueWill

    उत्तर

    15
    htmlDoc.DocumentNode.SelectSingleNode("//comment()[contains(., 'Buying Options')]/following-sibling::script") 
    
    +0

    एक आकर्षण की तरह काम किया। धन्यवाद! अब, मुझे जावास्क्रिप्ट ऑब्जेक्ट को पार्स करने का एक तरीका चाहिए। – Abe

    +0

    बस एक और चीज़ जोड़ने के लिए। एक बार जब मुझे स्क्रिप्ट नोट मिला, तो मैं नियमित अभिव्यक्तियों का उपयोग करके आवश्यक जानकारी को पार्स करने में सक्षम था। धन्यवाद! – Abe

    संबंधित मुद्दे