Verwenden Sie htmlAgilityPack, um den gesamten inneren Text des Tags zu scrapen

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

Frage

Ich möchte das ganze Wort aus dem Link http://search.freefind.com/siteindex.html?id=59478474&ltr=10240&fwr=0&pid=i&ics=1 Ich habe versucht, etwas wie folgt:

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

Meine erwartete Ausgabe sollte gefallen

a    
aa
aachhe
aagrashi
aagun
aaj
aam
aanka
aankhi
aar
aashman
abāddhō
abāddhōtā
abadh
..
..

Aber es hat nicht funktioniert ?? Es zeigt "no word found" bedeutet, dass es null zurückgibt. Wie kann ich in diesem Fall den gesamten Text von <a> erhalten? Kann mir jemand sagen, was in SelectNodes sein soll ("") ???

Akzeptierte Antwort

Sie müssen nach dem <script> -Tag (nicht <a> -Tag wie Sie gesagt haben) nach dem nächsten <a> <font class='search-index-font'> , innerhalb von <font class='search-index-font'> . Dieser xpath-Ausdruck wird den Trick machen:

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

Und dieser Code:

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']/script/following-sibling::text()[1]");

gibt die benötigten Textknoten zurück:

a
aa
aachhe
aagrashi
aagun
aaj
aam
aanka
aankhi
aar
...

Beliebte Antwort

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


Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum