C#-在WebBrowser中修剪HTML片段

C#-在WebBrowser中修剪HTML片段,c#,html,C#,Html,我正在WebBrowser控件中加载特定网页。是否有一种方法可以获取此页面中的以下HTML,并将其保存为字符串并将其裁剪 下面是一个例子: HTML代码段: <div class="alertText">26 friends joined</div> 26位好友加入 修剪: 二十六 很抱歉描述得很模糊,但我真的不知道该怎么说。谢谢。你的意思是这样的: string numberOfFriends; HtmlElementCollection elems = webB

我正在WebBrowser控件中加载特定网页。是否有一种方法可以获取此页面中的以下HTML,并将其保存为字符串并将其裁剪

下面是一个例子:

HTML代码段:

<div class="alertText">26 friends joined</div>
26位好友加入
修剪:

二十六


很抱歉描述得很模糊,但我真的不知道该怎么说。谢谢。

你的意思是这样的:

string numberOfFriends;

HtmlElementCollection elems = webBrowser1.Document.GetElementsByTagName( "div" );
foreach( HtmlElement elem in elems )
{
  string className = elem.GetAttribute( "className" );
  if( !string.IsNullOrEmpty( className ) && "alertText".Equals( className ) )
  {
    string content = elem.InnerText;
    if( Regex.IsMatch( content, "\\d+ friends joined" ) )
    {
      numberOfFriends = Regex.Match( content, "(\\d+) friends joined" ).Groups[ 1 ].Value;
    }
  }
}
我不完全确定正则表达式是否完全正确,但其余的都应该有效

编辑:
组[0]
更改为
组[1]
-IIRC第一组是完全匹配的


编辑2:
elem.GetAttribute(“class”)
更改为
elem.GetAttribute(“className”)
-固定属性名和固定变量名(
class
更改为
className
)。

为什么不立即用regex搜索HTML,而不是枚举HtmlElement类型

html = WebBrowser1.Document.documentElement.OuterHTML
pattern = @'<div class="alertText">(\d{1,2}) friends joined</div>'
for Match m in Regex.Matches(html, pattern) {
    friendsJoined = Convert.ToInt32(m.Groups[1].Value)
}
html=WebBrowser1.Document.documentElement.OuterHTML
pattern=@(\d{1,2})好友已加入'
对于Regex.Matches中的Match m(html,模式){
friendsJoined=Convert.ToInt32(m.Groups[1].Value)
}
如果您希望抓取更少地依赖于HTML,您可以删除outerbits

html = WebBrowser1.Document.documentElement.OuterHTML
pattern = @'>(\d{1,2}) friends joined</'
for Match m in Regex.Matches(html, pattern) {
    friendsJoined = Convert.ToInt32(m.Groups[1].Value)
}
html=WebBrowser1.Document.documentElement.OuterHTML

pattern=@'>(\d{1,2})朋友加入我想说这是一个更好的正则表达式匹配

html = WebBrowser1.Document.documentElement.OuterHTML
pattern = @'(\d+)\sfriends\sjoined'
for Match m in Regex.Matches(html, pattern) {
    friendsJoined = Convert.ToInt32(m.Groups[1].Value)
}

哪一部分?类是一个保留字,当我在电脑前时,我会检查其余部分。需要更多的细节。在
WebBrowser
中没有
documentElement
属性-您必须使用
webBrowser1.Document.Body.OuterHTML
或使用带有
webBrowser1.Document.DomDocument
的非托管mshtml接口。