Estrai email da HTML usando HtmlAgilityPack

c# html-agility-pack selectnodes

Domanda

Come posso estrarre l'email e l'indirizzo del sito web utilizzando HtmlAgilityPack in questo codice HTML:

<a class="email" href="mailto:babaie@irandoc.ac.ir">

<a class="" href="http://www.babaie.ir" target="_blank">www.babaie.ir</a>

Ho provato questo codice ma non funziona per la posta elettronica:

doc.DocumentNode.SelectNodes("//a[@href= ' ' ]");

Risposta popolare

Ottenere email:

var a = doc.DocumentNode.SelectSingleNode("//a[@class='email']");
if (a != null)
{
    string href = a.Attributes["href"].Value; // TODO: Check if href exists
    string email = href.Replace("mailto:", "");
}

Non è chiaro in che modo l'indirizzo del tuo sito web differisce da altri tag di ancoraggio (nessuna classe o id specifica qui), quindi il codice seguente restituirà tutti i link href da qualsiasi ancore nel tuo html:

var urls = doc.DocumentNode.SelectNodes("//a[@href]")
              .Select(a => a.Attributes["href"].Value)
              .Where(href => !href.StartsWith("mailto:")) // skip emails
              .ToList();


Related

Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché