如何在 ASP.NET 中获取 Html 中的电子邮件地址

How to take Email Address in Html in ASP.NET

我有一些 Html 像 :

<div class="user">
<span>Email</span>
<span>John_1990@gmail.com</span>
</div>

我如何解析这个 Html 并只获取电子邮件地址? 谢谢

需要使用HTML敏捷Pack.You可以这样添加引用

Install-Package HtmlAgilityPack  

这是一个小例子,你可以怎么做。首先,您正在阅读 HTML 并获取所有带有 span 标记的行。之后您将检查 InnerText 是否为电子邮件地址,为此您将使用正则表达式。

        static void Main(string[] args)
        {
            string html = @"<!DOCTYPE html>
<html>
<body>

<h1>My First Heading</h1>

<p>My first paragraph.</p>

<table>
    <tr>
        <td>A!!</td>
        <td>te2</td>
        <td>2!!</td>
        <td>te43</td>
        <td></td>
        <td> !!</td>
        <td>.!!</td>
        <td>te53</td>
        <td>te2</td>
        <td>texx</td>
    </tr>
</table>

<div class=""user"">
<span>Email</span>
<span>John_1990@gmail.com</span>
</div>
</body>
</html>";

            HtmlDocument doc = new HtmlDocument();
            doc.LoadHtml(html);

            List<HtmlNode> spanNodes = doc.DocumentNode.Descendants().Where(x => x.Name == "span").ToList();

            List<string> emailAdd = new List<string>();
            foreach(HtmlNode node in spanNodes)
            {
                if (Regex.IsMatch(node.InnerText, @"^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$"))
                {
                    emailAdd.Add(node.InnerText);
                }
            }

            foreach(string email in emailAdd)
            {
                Console.WriteLine(email);
            }

        }