C# 从<;获取内部文本;部门级别>;使用<;a href>;小孩
我正在使用C#语言的网络浏览器,我需要从链接中获取文本。链接只是一个href,没有类 是这样的C# 从<;获取内部文本;部门级别>;使用<;a href>;小孩,c#,html,web,webrequest,C#,Html,Web,Webrequest,我正在使用C#语言的网络浏览器,我需要从链接中获取文本。链接只是一个href,没有类 是这样的 <div class="class1" title="myfirstClass"> <a href="link.php">text I want read in C# <span class="order-level"></span> 在这里,我创建了控制台应用程序来提取锚文本 static void Main(string[] args)
<div class="class1" title="myfirstClass">
<a href="link.php">text I want read in C#
<span class="order-level"></span>
在这里,我创建了控制台应用程序来提取锚文本
static void Main(string[] args)
{
string input = "<div class=\"class1\" title=\"myfirstClass\"><a href=\"link.php\">text I want read in C#<span class=\"order-level\"></span>";
HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(input);
foreach (HtmlNode item in doc.DocumentNode.Descendants("div"))
{
var link = item.Descendants("a").First();
var text = link.InnerText.Trim();
Console.Write(text);
}
Console.ReadKey();
}
static void Main(字符串[]args)
{
string input=“我想用C#读取的文本”;
HtmlAgilityPack.HtmlDocument doc=新的HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(输入);
foreach(doc.DocumentNode.subjects(“div”)中的HtmlNode项)
{
var link=item.subscriptions(“a”).First();
var text=link.InnerText.Trim();
控制台。写入(文本);
}
Console.ReadKey();
}
请注意,这是
htmlagilitypack
问题,因此请正确标记问题。这是通过标记名获取元素的方式:
String elem = webBrowser1.Document.GetElementsByTagName("div");
使用此选项,您应该提取href的值:
var hrefLink = XElement.Parse(elem)
.Descendants("a")
.Select(x => x.Attribute("href").Value)
.FirstOrDefault();
如果您有超过1个“a”标记,您也可以放入foreach循环,如果这是您想要的
编辑:
使用XElement:
您可以通过调用元素.ToString()
来获取包含外部节点的内容
如果要排除外部标记,可以调用String.Concat(element.Nodes())
要使用HtmlAgilityPack
获取innerHTML,请执行以下操作:
HtmlWeb=newhtmlweb()代码>
HtmlDocument dc=web.Load(“您的Url”)代码>
var s=dc.DocumentNode.SelectSingleNode(“//a[@name=“a”]”)。InnerHtml代码>
我希望有帮助 不知道这个类,但是与HTML相关的GetElementById
应该只检索1个具有该ID的元素,并且这些ID不能包含空格。我在HTMLI中也没有看到任何ID。我很好奇,您使用服务器端语言获取客户端HTML的内部文本是什么?XElement.Parse(elem)必须是字符串。我可以转换HTMLElement吗?它抛出:System.Xml.dly中发生了类型为'System.Xml.XmlException'的未处理异常。您可能只需要在元素
前面使用字符串
,而不是HtmlElement
,我的借口。我对xElement是新手。字符串htmlCode=@“”;var elem=XElement.Parse(htmlCode).subjections(“a”).Select(x=>x.Attribute(“href”).Value.FirstOrDefault();MessageBox.Show(elem);但是mbox是空的。我做错了什么?MessageBox.Show(string.Format(hrefLink))代码>?mscorlib.dll中发生“System.ArgumentNullException”类型的未处理异常。。。结果为空..?这是可行的,但当我读取输入时,我得到了正常的HTML语法。有没有办法把它转换成正确的语法?比如:
var hrefLink = XElement.Parse(elem)
.Descendants("a")
.Select(x => x.Attribute("href").Value)
.FirstOrDefault();