我正在加載WebBrowser控件中的特定網頁。有沒有辦法採取以下HTML將位於此頁面並將其保存爲一個字符串並修剪它?C# - 修剪Web瀏覽器內的HTML片段
下面是一個例子:
HTML摘錄:
<div class="alertText">26 friends joined</div>
修剪:
我的非常模糊的描述抱歉,但我真的不知道怎麼說這個。謝謝。
我正在加載WebBrowser控件中的特定網頁。有沒有辦法採取以下HTML將位於此頁面並將其保存爲一個字符串並修剪它?C# - 修剪Web瀏覽器內的HTML片段
下面是一個例子:
HTML摘錄:
<div class="alertText">26 friends joined</div>
修剪:
我的非常模糊的描述抱歉,但我真的不知道怎麼說這個。謝謝。
爲什麼不直接使用正則表達式搜索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,你可以放下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)
}
你的意思是這樣的:
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;
}
}
}
我不能完全肯定,如果正則表達式是完全正確的,但其餘的應該工作。
編輯:更改Groups[ 0 ]
到Groups[ 1 ]
- IIRC第一組是完整的比賽。
編輯2:更改elem.GetAttribute("class")
到elem.GetAttribute("className")
- 固定屬性的名稱和固定變量名稱(class
到className
)。
我會說,這是一個更好的正則表達式匹配;
html = WebBrowser1.Document.documentElement.OuterHTML
pattern = @'(\d+)\sfriends\sjoined'
for Match m in Regex.Matches(html, pattern) {
friendsJoined = Convert.ToInt32(m.Groups[1].Value)
}
似乎不起作用。 – user
需要更多的細節。 –
「WebBrowser」中沒有'documentElement'屬性 - 您必須使用'webBrowser1.Document.Body.OuterHTML'或使用非web託管的mshtml接口和'webBrowser1.Document.DomDocument'。 – Majkel