我是C#的新手,我正在尝试使用webBrowser从网站访问元素。我想知道如何才能得到#34;开发人员"来自网站的字符串:
<div id="title" style="display: block;">
<b>Title:</b> **Developers**
</div>
我尝试使用webBrowser1.Document.GetElementById("title")
,但我不知道如何继续离开这里。
谢谢:)
答案 0 :(得分:0)
您可以使用WebClient class
下载源代码然后在文件中查找<b>Title:</b>**Developers**</div>
,然后省略&#34;开发人员&#34;旁边的所有内容。
答案 1 :(得分:0)
您可以使用HtmlAgilityPack(如Giannis http://htmlagilitypack.codeplex.com/所述)。使用Web浏览器控件对于此任务来说太多了:
HtmlAgilityPack.HtmlWeb web = new HtmlWeb();
HtmlAgilityPack.HtmlDocument doc = web.Load("http://www.google.com");
var el = doc.GetElementbyId("title");
string s = el.InnerHtml; // get the : <b>Title:</b> **Developers**
我还没有尝试过这段代码,但它应该非常接近工作。
HtmlAgilityPack中必须有InnerText
,允许您这样做:
string s = el.InnerText; // get the : Title: **Developers**
您还可以删除相应的节点来删除Title:
:
el.SelectSingleNode("//b").Remove();
string s = el.InnerText; // get the : **Developers**
如果出于某种原因你想坚持使用网络浏览器控件,我认为你可以这样做:
var el = webBrowser1.Document.GetElementById("title");
string s = el.InnerText; // get the : Title: **Developers**
<强>更新强>
请注意,上面的//b
是XPath语法,您可能会对此感兴趣:
答案 2 :(得分:0)
HtmlAgilityPack
和CsQuery
是许多人在.NET中使用HTML页面的方式,我也推荐它们。
但是如果你的任务仅限于这个简单的要求,并且你有一个<div>
标记是有效的XHTML(就像你发布的标记样本一样),那么你可以把它当作XML。表示您可以使用.NET本机API(例如XDocument
或XmlDocument
)来解析HTML并执行XPath查询以从中获取特定部分,例如:
var xml = @"<div id=""title"" style=""display: block;""> <b>Title:</b> Developers</div>";
//or according to your code snippet, you may be able to do as follow :
//var xml = webBrowser1.Document.GetElementById("title").OuterHtml;
var doc = new XmlDocument();
doc.LoadXml(xml);
var text = doc.DocumentElement.SelectSingleNode("//div/b/following-sibling::text()");
Console.WriteLine(text.InnerText);
//above prints " Developers"
在XPath之上选择"Developers"
节点旁边的文本节点(<b>
)。