如何使用c#获取元素

本文关键字:元素 获取 何使用 | 更新日期: 2023-09-27 18:16:00

我是c#的新手,我正在尝试使用webBrowser从网站访问元素。我想知道如何从网站获得"开发人员"字符串:

<div id="title" style="display: block;"> <b>Title:</b> **Developers** </div>

我试着使用webBrowser1.Document.GetElementById("title"),但我不知道如何从这里继续下去。

谢谢:)

如何使用c#获取元素

您可以使用WebClient类

下载源代码。

然后在文件中查找<b>Title:</b>**Developers**</div>,然后省略"Developers"旁边的所有内容。

HtmlAgilityPackCsQuery是许多人在。net中使用HTML页面的方式,我也会推荐它们。

但是,如果您的任务仅限于这个简单的要求,并且您有一个有效XHTML的<div>标记(如您发布的标记示例),那么您可以将其视为XML。这意味着您可以使用。net原生API(如XDocumentXmlDocument)来解析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语法,您可能会对它感兴趣:

http://www.w3schools.com/XPath/xpath_syntax.asp

http://www.freeformatter.com/xpath-tester.html