-1

わかりました、これらのタグの間のテキストを見つけようとすることに興味があります:

<font color="#00006b">Aa Megami-sama (OAV 2011)</font>

そして、同じタグに名前のリストがあります。それらを取得して、動的配列リストに入れたいと思います。

HTMLAgilityPack を使用してこれを実行しようとしましたが、プログラムを実行すると次のようになります。 ここに画像の説明を入力

4

3 に答える 3

3

LoadHtml() メソッドは、URL ではなく、HTML を入力として受け取ります。HTML を自分でフェッチする必要があります。

例えば:

        using (var webclient = new WebClient())
        {
            var html = webclient.DownloadString("http://www.animenewsnetwork.com/encyclopedia/anime.php?list=A");

            HtmlDocument doc = new HtmlDocument();
            doc.LoadHtml(html);
            var node = doc.DocumentNode.SelectSingleNode("//font");
            Console.WriteLine(node.InnerText);
            Console.ReadKey();
        }
于 2012-08-19T06:20:40.647 に答える
0

まず、このように LoadHtml メソッドを使用して html ファイルのデータを取得します。

var webclient = new WebClient();
HTMLAgilityPack.HtmlDocument doc = new HTMLAgilityPack.HtmlDocument();
doc.LoadHtml(webClient.DownloadString(@"http://www.animenewsnetwork.com/encyclopedia/anime.php?list=A"));

ここで説明されているように、メタデータの文字セットが無効な可能性があるため、これが機能しない場合があります。このような場合、回避策として応答を手動で読み取ることができる場所で、回答を使用できます (HttpWebRequestおよび によるHttpWebResponse)。


次に、ここで説明されているように、他の解析エラー (上記のものを含む) を検出して処理する必要がある場合があります。

   if (doc.ParseErrors!=null && doc.ParseErrors.Count>0)
   {
       // Handle any parse errors as required
   }
   else
   {
        if (doc.DocumentNode != null)
        {
            HtmlNode fontNode = doc.DocumentNode.SelectSingleNode("//font");
            if (fontNode != null)
            {
                // Do something with fontNode
                MessageBox.Show(fontNode.InnerText);
            }
        }
    }
于 2012-08-19T06:38:04.457 に答える
0

あなたSelectSingleNode()は値を返していnullます。そのため、最後の行に対して「null チェック」を行う必要があります。次のようにします。

if(node != null)
{
   Messagebox.Show(node.InnerText);
}
于 2012-08-19T06:11:39.310 に答える