从浏览器中通过 ID 获取元素并显示在标签中
Get element by ID from webbrowser and show in label
所以我有一个问题.. 我想在我的 Windows 申请表的标签上显示网页中的文本。这是 "Inspect Element" 代码:
<ul id="userInfoNav">
<li>Rank: <span class="value">Sivilist</span></li>
<li>Bosted: <span class="value">Oslo</span></li>
<li>Gjeng: <span class="value">Ingen</span></li>
<li>Penger: <span id="money_hand" class="value">16,000 kr</span></li>
<li>Kuler: <span class="value">0 stk</span></li>
我试过使用:
web.Document.GetElementById("userInfoNav").InvokeMember("Value", label1.Text);
但它什么也没做..
文本也会不时更改..
这个问题表达得不太好,但从评论中看,有几件事可能是你想要的:
<ul id="userInfoNav">
中完整的内部html(请注意,由于ul
是一个未闭合的标签,因此内容可能与您期望的不同):
label1.Text = webBrowser1.Document.GetElementById("userInfoNav").innerHtml;
每个<li>
上的html:
var elem = webBrowser1.Document.GetElementById("userInfoNav");
foreach (var child in elem.Children.OfType<HtmlElement>())
{
label1.Text += child.InnerHtml; // child.InnerHtml contains the html of each li
// You can use child.InnerText which would remove the html tags (<span>)
}
你说的就是你在评论中想要的(即"Rank" "Bosted" "Gjeng" "Penger and "Kuler”)。代码特定于这种情况并不普遍:
var elem = webBrowser1.Document.GetElementById("userInfoNav");
foreach (var child in elem.Children.OfType<HtmlElement>())
{
label1.Text += child.InnerText.Split(':')[0]);
}
我想这三个都不是你想要的,但如果你不指定更多,我就可以做到这一点。至少,它应该让您了解如何访问数据
获取外部文本:
statsTextBox.Text = web.Document.GetElementById("userInfoNav").OuterText;
并在执行代码之前检查 ID 是否存在:
HtmlElement htmlelement = web.Document.GetElementById("userInfoNav");
if (htmlelement == null)
{
return;
}
else
{
statsTextBox.Text = web.Document.GetElementById("userInfoNav").OuterText;
}
所以我有一个问题.. 我想在我的 Windows 申请表的标签上显示网页中的文本。这是 "Inspect Element" 代码:
<ul id="userInfoNav">
<li>Rank: <span class="value">Sivilist</span></li>
<li>Bosted: <span class="value">Oslo</span></li>
<li>Gjeng: <span class="value">Ingen</span></li>
<li>Penger: <span id="money_hand" class="value">16,000 kr</span></li>
<li>Kuler: <span class="value">0 stk</span></li>
我试过使用:
web.Document.GetElementById("userInfoNav").InvokeMember("Value", label1.Text);
但它什么也没做..
文本也会不时更改..
这个问题表达得不太好,但从评论中看,有几件事可能是你想要的:
<ul id="userInfoNav">
中完整的内部html(请注意,由于ul
是一个未闭合的标签,因此内容可能与您期望的不同):label1.Text = webBrowser1.Document.GetElementById("userInfoNav").innerHtml;
每个
<li>
上的html:var elem = webBrowser1.Document.GetElementById("userInfoNav"); foreach (var child in elem.Children.OfType<HtmlElement>()) { label1.Text += child.InnerHtml; // child.InnerHtml contains the html of each li // You can use child.InnerText which would remove the html tags (<span>) }
你说的就是你在评论中想要的(即"Rank" "Bosted" "Gjeng" "Penger and "Kuler”)。代码特定于这种情况并不普遍:
var elem = webBrowser1.Document.GetElementById("userInfoNav"); foreach (var child in elem.Children.OfType<HtmlElement>()) { label1.Text += child.InnerText.Split(':')[0]); }
我想这三个都不是你想要的,但如果你不指定更多,我就可以做到这一点。至少,它应该让您了解如何访问数据
获取外部文本:
statsTextBox.Text = web.Document.GetElementById("userInfoNav").OuterText;
并在执行代码之前检查 ID 是否存在:
HtmlElement htmlelement = web.Document.GetElementById("userInfoNav");
if (htmlelement == null)
{
return;
}
else
{
statsTextBox.Text = web.Document.GetElementById("userInfoNav").OuterText;
}