为了账号安全,请及时绑定邮箱和手机立即绑定

使用 HtmlAgilityPack 显示节点内容时遇到问题

使用 HtmlAgilityPack 显示节点内容时遇到问题

慕田峪7331174 2023-12-19 16:05:54
我在此网址上抓取数据时遇到问题:http://patorjk.com/software/taag/#p=display&f=Graffiti&t =类型%20Something%20。问题是:我编写了一段代码,该代码应该抓取某个节点的内容并将其显示在控制台上。然而,节点中的内容和特定节点本身似乎无法访问,但我知道它们存在,因为我在代码中创建了一个条件,以便让我知道具有特定主体的节点是否是被发现并且确实被发现但由于某种原因没有显示:private static void getTextArt(string font, string word)        {            HtmlWeb web = new HtmlWeb();            //cureHtml method is just meant to return the http address            HtmlDocument htmlDoc = web.Load(cureHtml(font, word));            if(web.Load(cureHtml(font, word)) != null)                Console.WriteLine("Connection Established");            else                Console.WriteLine("Connection Failed!");            var nodes = htmlDoc.DocumentNode.SelectSingleNode(nodeXpath).ChildNodes;            foreach(HtmlNode node in nodes)            {                if(node != null)                    Console.WriteLine("Node Found.");                else                    Console.WriteLine("Node not found!");                Console.WriteLine(node.OuterHtml);            }        }        private const string nodeXpath = "//div[@id='maincontent']";}网站显示的Html如下所示:网站内的 Html 代码。箭头指向我试图到达的节点以及我试图在控制台上显示的内容当我在控制台上运行代码来检查节点及其内容并尝试显示 Xpath 的 OuterHtml 字符串时,控制台将如下显示它:控制台窗口显示我希望你们中的一些人能够向我解释为什么会出现这种情况。我已经在谷歌上尝试了两天的各种搜索,试图找出问题所在,但没有用。谢谢大家。
查看完整描述

1 回答

?
斯蒂芬大帝

TA贡献1827条经验 获得超8个赞

您想要的内容是动态加载的。


请改用HtmlWeb.LoadFromBrowser() 方法。另外,检查 htmlDoc 是否有 null,而不是调用两次。您当前的逻辑并不能保证您的状态。


        HtmlDocument htmlDoc = web.LoadFromBrowser(cureHtml(font, word));

        if (htmlDoc != null)

            Console.WriteLine("Connection Established");

        else

            Console.WriteLine("Connection Failed!");

此外,您还需要对结果进行解码。


            Console.WriteLine(WebUtility.HtmlDecode(node.OuterHtml));

如果这不起作用,则说明您的cureHtml()方法已损坏,或者您的目标是 .NET Core :)


查看完整回答
反对 回复 2023-12-19
  • 1 回答
  • 0 关注
  • 101 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信