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