2012-11-21 27 views
2

我有,我想提取网页源代码的网页获取特定数据(我已经收窄,到正是与此有关:只使用类项目

<div class="sideInfoPlayer"> 
<a class="signLink" href="spieler.php?uid=12345" title="Profile"> 
    <span class="wrap">Wagamama</span> 
</a> 

现在的伎俩这里是我想让Wagamama这个词变成一个消息框,但是这个词在每个网页上都有变化,所以我需要去获取那个元素,但是这个页面上没有ID,所以我正在考虑搜索类名为“sideInfoPlayer”,然后在前面的类块中找到“wrap”类。

我已经写下了以获得第一个,但不知道如何解决第二个问题,然后获得理想的价值。

 HtmlElementCollection col = webBrowser1.Document.GetElementsByTagName("div"); 
     foreach (HtmlElement element in col) 
     { 
      string cls = element.GetAttribute("className"); 
      if (String.IsNullOrEmpty(cls) || !cls.Equals("sideInfoPlayer")) 
       continue; 
     } 

我希望你能帮我取消这个问题。

回答

0

您有更好的选择。看看http://htmlagilitypack.codeplex.com/

在这里:How can i parse html string

首先,您需要通过手动或使用NuGet包管理器下载它添加参考HtmlAgilityPack库。

// loading html into HtmlDocument 
var doc = new HtmlWeb().Load("http://website.com/mypage"); 
// walking through all nodes of interest 
foreach (var node in doc.DocumentNode.SelectNodes("//div[@class='sideInfoPlayer']/span[@class='wrap']")) 
{ 
    // here is your text: node.InnerText 
} 

//div[@class='sideInfoPlayer']/span[@class='wrap']被称为Xpath Expression而这一次的字面意思是“让我与类的所有span元素=包装是div元素与班的孩子= sideInfoPlayer。

我没有测试它,但它应该工作

+0

嗨杏, 它刚刚获得; ... T的工作对我来说 只是要清楚,我有点新本C#作为我用VB编写之前很多,并试图在我的手C#。 请教你如何在一段代码中向我展示,以便我能理解操作并适应我的需求(我希望)是否太多了。 此致敬礼。 – touyets

+0

@ user1842134更新了我的答案 – Anri

+0

太棒了。谢谢! – touyets