わかりました、これらのタグの間のテキストを見つけようとすることに興味があります:
<font color="#00006b">Aa Megami-sama (OAV 2011)</font>
そして、同じタグに名前のリストがあります。それらを取得して、動的配列リストに入れたいと思います。
HTMLAgilityPack を使用してこれを実行しようとしましたが、プログラムを実行すると次のようになります。
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();
}
まず、このように 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);
}
}
}
あなたSelectSingleNode()
は値を返していnull
ます。そのため、最後の行に対して「null チェック」を行う必要があります。次のようにします。
if(node != null)
{
Messagebox.Show(node.InnerText);
}