Usando htmlAgilityPack raspando todo el texto interno de la <a>etiqueta</a>

.net c# html-agility-pack web-scraping xpath

Pregunta

Quiero eliminar todas las palabras del enlace http://search.freefind.com/siteindex.html?id=59478474&ltr=10240&fwr=0&pid=i&ics=1 Probé algo como esto:

HtmlWeb web = new HtmlWeb();
HtmlAgilityPack.HtmlDocument doc = web.Load("http://search.freefind.com/siteindex.html?id=59478474&ltr=10240&fwr=0&pid=i&ics=1");
HtmlNodeCollection nodes = doc.DocumentNode.SelectNodes("//font[@class='search-index-font']//a");

if (nodes != null)
{

    foreach (HtmlNode n in nodes)
    {
         link = n.InnerText;
        my_link.Add(link);
        MessageBox.Show(link);
    }

}
else
    MessageBox.Show("no wordfound ");

Mi salida expexted debería gustar

HtmlWeb web = new HtmlWeb();
HtmlAgilityPack.HtmlDocument doc = web.Load("http://search.freefind.com/siteindex.html?id=59478474&ltr=10240&fwr=0&pid=i&ics=1");
HtmlNodeCollection nodes = doc.DocumentNode.SelectNodes("//font[@class='search-index-font']//a");

if (nodes != null)
{

    foreach (HtmlNode n in nodes)
    {
         link = n.InnerText;
        my_link.Add(link);
        MessageBox.Show(link);
    }

}
else
    MessageBox.Show("no wordfound ");

¿Pero no funcionó? Muestra "ninguna palabra encontrada" significa que devuelve nulo. ¿Cómo puedo obtener todo el texto de la etiqueta <a> en ese caso? ¿Alguien me puede decir qué debería estar en SelectNodes ("")?

Respuesta aceptada

Debe buscar el siguiente nodo de texto después de la etiqueta <script> (no de la etiqueta <a> como usted dijo), dentro de <font class='search-index-font'> . Esta expresión xpath hará el truco:

//font[@class='search-index-font']/script/following-sibling::text()[1]

Y este código:

//font[@class='search-index-font']/script/following-sibling::text()[1]

devolverá los nodos de texto que necesita:

//font[@class='search-index-font']/script/following-sibling::text()[1]

Respuesta popular

HtmlWeb web = new HtmlWeb();
HtmlAgilityPack.HtmlDocument doc =
    web.Load("http://search.freefind.com/siteindex.html?id=59478474&ltr=10240&fwr=0&pid=i&ics=1");
HtmlNodeCollection nodes = doc.DocumentNode.SelectNodes("//font[@class='search-index-font']");
string link = string.Empty;
if (nodes != null)
{
    foreach (var item in nodes)
    {
        var value =
        item.Elements("script").ToList();
        foreach (var items in value)
        {
            link += items.NextSibling.InnerText+ "\n";
        }
    }
    MessageBox.Show(link);
}
else
    MessageBox.Show("no wordfound ");



Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué