首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >html-agility-pack Get HTML writen 'Loading...‘

html-agility-pack Get HTML writen 'Loading...‘
EN

Stack Overflow用户
提问于 2018-05-11 20:43:44
回答 2查看 242关注 0票数 2

我正在尝试从一个带有html-agility-pack的站点获取HTML

代码语言:javascript
复制
private static void GetHtml()
{
    var html = ".....";

    HtmlWeb web = new HtmlWeb();

    var htmlDoc = web.Load(html);

    var node = htmlDoc.DocumentNode.SelectSingleNode("//body");

    string h = node.OuterHtml;
    Console.WriteLine(h);
}

但在必须写入数据的地方,写入了“加载...”。

我该如何解决这个问题?

[

]

EN

回答 2

Stack Overflow用户

发布于 2018-05-12 21:50:43

您将收到一条“正在加载”消息,因为这是页面的原始Html源所包含的内容。在浏览器中加载文档后,页面上运行的脚本将生成新内容。但HtmlAgilityPack看不到这点。HtmlAgilityPack是作为解析超文本标记语言的库创建的。

更新:最新版本的HtmlAgilityPack现在能够在后台运行WebBrowser (System.Windows.Forms),并通过调用LoadFromBrowser()方法在页面上执行Javascript代码。然后,可以从生成的页面中抓取新动态生成的Html。参见http://html-agility-pack.net/from-browser

票数 2
EN

Stack Overflow用户

发布于 2018-05-13 18:07:16

谢谢你的回答。你是真的。这个问题是因为javascript没有运行。

我已经用geckoFX解决了这个问题

代码语言:javascript
复制
 geckoWebBrowser1.Navigate("google.com");

        GeckoHtmlElement element = null;
        var geckoDomElement = geckoWebBrowser1.Document.DocumentElement;
        if (geckoDomElement is GeckoHtmlElement)
        {
            element = (GeckoHtmlElement)geckoDomElement;
            var innerHtml = element.InnerHtml;

            using (FileStream fs = new FileStream(@"" + "aaa" + ".html", FileMode.Create))
            {
                using (StreamWriter w = new StreamWriter(fs, Encoding.UTF8))
                {
                    w.WriteLine(innerHtml);
                }

            }
        }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50292644

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档