2016-12-24 56 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 –