C# 从<;获取内部文本;部门级别>;使用<;a 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)

我正在使用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)
        {
            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,请执行以下操作:

  • 从安装HtmlAlityPack
  • 使用此代码
  • 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();