Utilisation de htmlAgilityPack pour supprimer tout le texte intérieur de la <a>balise</a>

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

Question

Je veux supprimer tous les mots du lien http://search.freefind.com/siteindex.html?id=59478474&ltr=10240&fwr=0&pid=i&ics=1 J'ai essayé quelque chose comme ceci:

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 ");

Ma sortie explicite devrait ressembler

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 ");

Mais ça n'a pas marché ?? Cela indique "aucun mot trouvé" signifie qu'il renvoie null.Comment puis-je obtenir tout le texte de la balise <a> dans ce cas ??? Quelqu'un peut-il me dire ce qui devrait être dans SelectNodes ("") ???

Réponse acceptée

Vous devez rechercher le prochain noeud de texte après la <script> (et non la balise <a> comme vous l'avez dit), dans <font class='search-index-font'> . Cette expression xpath fera l'affaire:

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

Et ce code:

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

renverra les nœuds de texte dont vous avez besoin:

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

Réponse populaire

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 ");



Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi