2016-11-27 15 views
1

我目前正在嘗試分析從一個HTML文檔基於鏈路關閉標題上方,但無論我怎麼努力,該程序是無法找到它。 這裏是方法我不工作:如何找到在HTML鏈接一定的頭下,並解析它

public string findMajorURL(string collegeURL, string major) 
    { 
     HtmlDocument doc = new HtmlDocument(); 
     doc.LoadHtml(collegeURL); 
     var root = doc.DocumentNode; 
     var htmlNodes = root.Descendants(); 
     //Find html node containing the major heading 
     foreach(HtmlNode node in htmlNodes) 
     { 
      if (node.InnerText == major) 
      { 
       HtmlNode target = node.NextSibling; 
       List<string> links = target.Descendants("a").Select(a => a.Attributes["href"].Value).ToList(); 
       return links.First()+ "__IT WORKED__"; 
      } 
     } 
     return "Major not found"; 
    } 

這是HTML的樣子,我嘗試分析:

<div style="padding-left: 20px"> 
     <h3 id="ent1629">Biological Sciences </h3> 
     <a href="preview_entity.php?catoid=5&ent_oid=1629&returnto=818">Go to information for this department.</a> 
     <br> 
     <p>...</p> 
     <div id="data_c_1629" style="display: none">...</div> 
     <!--script language="javascript">hideshow(data_c_1630)</script--> 

主要用戶輸入應該匹配標題,生物科學。基於關閉標題的,我想要得到的鏈接下它,在這​​種情況下是preview_entity.php catoid = 5 & ent_oid = 1629 & returnto = 818

警告:我不能使用XPath的任意不等階我有Visual Studio的版本,所以我假設使用LINQ莫名其妙地是最好的方式去,但我不知道。

編輯事實證明,內部文本不匹配的主要,但是,我不明白這是可能的,因爲我直接從HTML代碼。任何想法,以什麼是錯的?

回答

0

根據HTML片段貼,nodeif塊參照<h3>元素和target引用<h3>下一個兄弟是<a>內。這就是說,你不需要做target.Descendants("a")。從target直接剛拿到href屬性:

if (node.InnerText == major) 
{ 
    HtmlNode target = node.NextSibling; 
    return target.GetAttributeValue("href", "")+ "__IT WORKED__"; 
} 
+0

我想這一點,但顯然它甚至沒有進入if語句:/我不明白爲什麼內的文本不匹配起來,因爲我甚至把內文本直接來自html文檔,但它仍然不匹配。 –

相關問題