htmlAgilityPackを使用して、 <a>タグ</a>からすべての内部テキストを削り取る

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

質問

http://search.freefind.com/siteindex.html?id=59478474&ltr=10240&fwr=0&pid=i&ics=1リンクからすべての単語を削除したい:このようなものを試した:

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

私のexpexed出力が好きなはずです

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

しかし、それは動作しませんでしたか? それは "単語が見つかりません"を示していますそれはnull.Howを返すことを意味どのように<a>その場合のタグからすべてのテキストを得ることができますか? 誰でも私に教えてくださいSelectNodes( "")に何があるべきですか?

受け入れられた回答

<script> <font class='search-index-font'>中で、 <script>タグの後に次のテキストノードを検索する必要があります( <a>タグではありません)。このxpath式はトリックを行います:

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

そしてこのコード:

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

必要なテキストノードを返します。

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

人気のある回答

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



ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ