2010-05-18 14 views
13

के साथ वर्ग में लिंक प्राप्त करें कक्षा alt के साथ tr का एक गुच्छा है। मैं सभी लिंक (या आखिरी बार) प्राप्त करना चाहता हूं, फिर भी मैं यह नहीं समझ सकता कि एचटीएमएल चपलता पैक के साथ कैसे।एचटीएमएल चपलता पैक

मैंने एक के रूपों की कोशिश की लेकिन मुझे केवल सभी लिंक या कोई नहीं मिला। यह प्रतीत के लिए एक ही नोड में एक जो कोई मतलब नहीं के बाद से मैं n.SelectNodes

html.LoadHtml(page); 
var nS = html.DocumentNode.SelectNodes("//tr[@class='alt']"); 
foreach (var n in nS) 
{ 
    var aS = n.SelectNodes("a"); 
    ... 
} 
+0

आप html आप पार्स करने के लिए कोशिश कर रहे हैं का एक टुकड़ा दिखा सकते हैं? मैं – jaltiere

+0

@jaltiere करने की कोशिश कर रहा हूं, इस पर पूरी तरह स्पष्ट नहीं हूं: वह सीएसएस चयनकर्ता 'tr.alt a' चाहता है। – SLaks

उत्तर

15
LINQ

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

var links = html.DocumentNode 
      .Descendants("tr") 
      .Where(tr => tr.GetAttributeValue("class", "").Contains("alt")) 
      .SelectMany(tr => tr.Descendants("a")) 
      .ToArray(); 

ध्यान दें कि यह भी <tr class="Malto"> से मेल खाएगा; आप रेगेक्स के साथ Contains कॉल को प्रतिस्थापित करना चाह सकते हैं।

तुम भी Fizzler इस्तेमाल कर सकते हैं:

html.DocumentNode.QuerySelectorAll("tr.alt a"); 

ध्यान दें कि दोनों तरीकों में भी एंकर कि लिंक नहीं हैं वापस आ जाएगी।

11

एकल क्वेरी में सभी लिंक का चयन क्यों नहीं:

html.LoadHtml(page); 
var nS = html.DocumentNode.SelectNodes("//tr[@class='alt']//a"); 
foreach(HtmlNode linkNode in nS) 
{ 
//do something 
} 

यह एचटीएमएल के लिए मान्य है:

<table> 
<tr class = "alt"> 
<td><'a href="link.html">Some Link</a></td> 
</tr> 
</table> 
संबंधित मुद्दे