我正在尝试从一个带有html-agility-pack的站点获取HTML
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);
}但在必须写入数据的地方,写入了“加载...”。
我该如何解决这个问题?
[

]
发布于 2018-05-12 21:50:43
您将收到一条“正在加载”消息,因为这是页面的原始Html源所包含的内容。在浏览器中加载文档后,页面上运行的脚本将生成新内容。但HtmlAgilityPack看不到这点。HtmlAgilityPack是作为解析超文本标记语言的库创建的。
更新:最新版本的HtmlAgilityPack现在能够在后台运行WebBrowser (System.Windows.Forms),并通过调用LoadFromBrowser()方法在页面上执行Javascript代码。然后,可以从生成的页面中抓取新动态生成的Html。参见http://html-agility-pack.net/from-browser。
发布于 2018-05-13 18:07:16
谢谢你的回答。你是真的。这个问题是因为javascript没有运行。
我已经用geckoFX解决了这个问题
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);
}
}
}https://stackoverflow.com/questions/50292644
复制相似问题