2010-03-11 15 views
6

मैं एचटीएमएल चपलता पैक का उपयोग कर HTML तालिका पार्स करने के लिए चाहता हूँ। मैं तालिका से केवल कुछ पूर्वनिर्धारित कॉलम डेटा निकालना चाहता हूं।एचटीएमएल चपलता पैक

लेकिन मैं पार्स करने और HTML चपलता पैक करने के लिए नया हूँ और मैं कोशिश की है, लेकिन मैं कैसे मेरे जरूरत के लिए एचटीएमएल चपलता पैक का उपयोग करने के लिए पता नहीं है।

तो किसी को तो मुझे उदाहरण दे जानता है संभव

संपादित करें:

इसे पसंद करता है, तो हम केवल निर्णय लिया स्तंभ नाम 'डेटा निकालना चाहते हैं HTML तालिका पार्स करने के लिए संभव है? जैसे कि 4 कॉलम नाम, पता, phno हैं और मैं केवल नाम और पता डेटा निकालना चाहता हूं।

+0

@ हरिकृष्ण - क्या आपके पास टेबल संरचना का एक छोटा सा नमूना है? –

+0

अधिक जानकारी के एचटीएमएल चपलता पैक का उपयोग करते हुए एचटीएमएल डेटा से डेटा निकालने के लिए: http://stackoverflow.com/questions/2431652/html-agility-pack – Harikrishna

उत्तर

6

कि चर्चा मंचों here में का एक उदाहरण है। तालिका उत्तर देखने के लिए थोड़ा नीचे स्क्रॉल करें। मेरी इच्छा है कि वे बेहतर नमूने प्रदान करेंगे जो ढूंढना आसान था।

संपादित करें: विशिष्ट कॉलम से डेटा निकालने के लिए आपको सबसे पहले <th> टैग मिलना होगा जो आपके इच्छित कॉलम से मेल खाते हैं और उनकी अनुक्रमणिका याद करते हैं। आपको उसी सूचकांक के लिए <td> टैग खोजने की आवश्यकता होगी। मान लें कि आप स्तंभों की अनुक्रमित पता है कि तुम कुछ इस तरह कर सकता है:

HtmlDocument doc = new HtmlDocument(); 
doc.LoadHtml("http://somewhere.com"); 
HtmlNode table = doc.DocumentNode.SelectSingleNode("//table"); 
foreach (var row in table.SelectNodes("//tr")) 
{ 
    HtmlNode addressNode = row.SelectSingleNode("td[2]"); 
    //do something with address here 
    HtmlNode phoneNode = row.SelectSingleNode("td[5]"); 
    // do something with phone here 
} 

EDIT2: आप स्तंभों की अनुक्रमणिका नहीं जानते अगर आप इस तरह पूरी बात कर सकता है। मैंने इसका परीक्षण नहीं किया है।

HtmlDocument doc = new HtmlDocument(); 
doc.LoadHtml("http://somewhere.com"); 
var tables = doc.DocumentNode.SelectNodes("//table"); 

foreach(var table in tables) 
{ 
    int addressIndex = -1; 
    int phoneIndex = -1; 
    var headers = table.SelectNodes("//th"); 
    for (int headerIndex = 0; headerIndex < headers.Count(); headerIndex++) 
    { 
     if (headers[headerIndex].InnerText == "address") 
     { 
      addressIndex = headerIndex; 
     } 
     else if (headers[headerIndex].InnerText == "phone") 
     { 
      phoneIndex = headerIndex; 
     } 
    } 

    if (addressIndex != -1 && phoneIndex != -1) 
    { 
     foreach (var row in table.SelectNodes("//tr")) 
     { 
      HtmlNode addressNode = row.SelectSingleNode("td[addressIndex]"); 
      //do something with address here 
      HtmlNode phoneNode = row.SelectSingleNode("td[phoneIndex]"); 
      // do something with phone here 
     } 
    } 
} 
+0

@Harikrishna - यह प्रत्येक तालिका में डेटा की एक ही तरह है? क्या आप सभी तालिकाओं से एक ही कॉलम निकालना चाहते हैं? क्या आप केवल एक विशिष्ट तालिका खोजना चाहते हैं? मुझे थोड़ा सा मदद करें। मैं जवाब देने की कोशिश करता रहता हूं और फिर आप अधिक जानकारी प्रदान करते हैं। आइए वहां सारी जानकारी प्राप्त करें। –

+0

कि के लिए @Mike दो Sir..Okay खेद ... की तरह वेब पेज में एक से अधिक तालिका टैग रहे हैं, लेकिन मैं केवल एक तालिका जो स्तंभ नाम है के रूप में हम पता और फोन की तरह कोई परिभाषित किया था से डेटा निकालना चाहते हैं। अन्य टेबल टैग अन्य जानकारी के लिए है और उपयोगी नहीं है। – Harikrishna

+0

@ माइक दो सर .. एक से अधिक टेबल वाले कई वेब पेज हैं। और हर वेब पेज से मैं केवल एक टेबल के लिए डेटा निकालना चाहता हूं जिसमें फोन नंबर और पता का कॉलम नाम है। – Harikrishna

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