-1

好的,我有兴趣尝试在这些标签之间找到文本:

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

而且我有一个名称在相同标签中的列表,我想抓住它们并将它们放入动态数组列表中。

我曾尝试使用 HTMLAgilityPack 来执行此操作,但是当我运行我的程序时会发生这种情况: 在此处输入图像描述

4

3 回答 3

3

LoadHtml() 方法将 HTML 作为输入,而不是 URL。您需要自己获取 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

SelectSingleNode()的返回null值。所以你需要对最后一行做一个“空检查”。这样做:

if(node != null)
{
   Messagebox.Show(node.InnerText);
}
于 2012-08-19T06:11:39.310 回答
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"));

现在,由于可能的元数据字符集可能无效,有时这可能无法正常工作。在这种情况下,您可以在那里使用答案,解决方法是手动读取响应(通过HttpWebRequestHttpWebResponse)。


接下来,您可能需要检测和处理其他解析错误(包括上述错误)(如果有的话),如此处所述

   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 回答