如何使用c#获取元素
本文关键字:元素 获取 何使用 | 更新日期: 2023-09-27 18:16:00
我是c#的新手,我正在尝试使用webBrowser从网站访问元素。我想知道如何从网站获得"开发人员"字符串:
<div id="title" style="display: block;">
<b>Title:</b> **Developers**
</div>
我试着使用webBrowser1.Document.GetElementById("title")
,但我不知道如何从这里继续下去。
谢谢:)
您可以使用WebClient类
下载源代码。然后在文件中查找<b>Title:</b>**Developers**</div>
,然后省略"Developers"旁边的所有内容。
HtmlAgilityPack
和CsQuery
是许多人在。net中使用HTML页面的方式,我也会推荐它们。
但是,如果您的任务仅限于这个简单的要求,并且您有一个有效XHTML的<div>
标记(如您发布的标记示例),那么您可以将其视为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选择<b>
节点旁边的文本节点("Developers"
)
您可以使用htmllagilitypack(正如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**
我没有试过这个代码,但它应该非常接近工作。
在htmllagilitypack中也必须有一个InnerText
,允许你这样做:
string s = el.InnerText; // get the : Title: **Developers**
您还可以通过删除适当的节点来删除Title:
:
el.SelectSingleNode("//b").Remove();
string s = el.InnerText; // get the : **Developers**
如果出于某种原因你想坚持使用web浏览器控件,我认为你可以这样做:
var el = webBrowser1.Document.GetElementById("title");
string s = el.InnerText; // get the : Title: **Developers**
注意,上面的//b
是XPath语法,您可能会对它感兴趣: