2016-12-24 25 views
0

我想創建一個應用程序,它搜索特定的關鍵字並顯示關鍵字的定義。我正在使用網絡瀏覽器,即導航到網站。現在我想分析該HTML代碼並獲得描述的<span>。那可能嗎?我無法解決這個問題。C#如何獲得一個div類的跨度?

下面是HTML代碼:

<div class="_G1d _wle _xle"> 
    <div class="_RBg"> 
     <div class="mod" data-md="50" style="clear:none" data-ved="0ahUKEwjL6Nn40YzRAhWBeFAKHW6qAOwQkCkIrQEoATAV"> 
      <!--m--> 
      <div class="_cgc" data-hveid="174" data-ved="0ahUKEwjL6Nn40YzRAhWBeFAKHW6qAOwQziAIrgEoADAV"> 
       <div jsl="$t t-oF0h478wPRI;$x 0;" class="r-iv2Iqojxo_88"> 
        <div class="kno-rdesc r-ia8pb7p3eFsA" jsl="$t t-JgTEvN6zUII;$x 0;"> 
        <span> 
         "The Eiffel Tower is a wrought iron lattice tower on the Champ de Mars in Paris, France. It is named after the engineer Gustave Eiffel, whose company designed and built the tower." 
        </span> 
        <span>...</span> 
        </div> 
       </div> 
      </div> 
     </div> 
    </div> 
    <!--n--> 
</div> 

這是我的代碼:

private void button1_Click(object sender, EventArgs e) 
{ 
    webBrowser1.Navigate("https://www.google.de/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=" + textBox1.Text); 
    Get_Data(); 
} 

private void Get_Data() 
{ 
    foreach (HtmlElement el in webBrowser1.Document.GetElementsByTagName("div")) 
     if (el.GetAttribute("className") == "_cgc") 
     { 
      description.Text = el.InnerText; 
     } 
} 
+0

請發表您的代碼代碼而不是截圖。 –

+0

這是我的錯,對不起。我是新的StackOverflow。 –

回答

0

也許你可以使用Split獲得跨度:

private void Get_Data() 
    { 
     foreach (HtmlElement el in webBrowser1.Document.GetElementsByTagName("div")) 
     { 
      if (el.GetAttribute("className") == "_cgc") 
      { 
       string[] splitSpan = el.InnerText.Split(new[] { "<span>", "</span>" }, StringSplitOptions.None); 
       description.Text = splitSpan[1]; 
      } 
     } 
    } 
+0

總是有一個類型爲「System.NummReferenceException」的未處理的異常。在我看來,這個問題位於「webBrowser1.Document.GetElementsByTagName(」div「)」。 –

+0

我解決了老問題,但現在有了一個新問題。看看你自己:http://i.imgur.com/IRpZ7cj.png –