C# 在页面加载完成后下载 HTML 字符串
c# download html string after page loading is finished
我正在尝试使用循环来下载一堆html页面并报废内部数据。但是这些页面在加载时有一些 JavaScript 作业运行。所以我认为使用网络客户端可能不是一个好的选择。但是如果我像下面这样使用网络浏览器。它在循环中第一次调用后返回空的 HTML 字符串。
WebBrowser wb = new WebBrowser();
wb.ScrollBarsEnabled = false;
wb.ScriptErrorsSuppressed = true;
wb.Navigate(url);
while (wb.ReadyState != WebBrowserReadyState.Complete) { Application.DoEvents(); Thread.Sleep(1000); }
html = wb.Document.DomDocument.ToString();
您说的没错,WebClient 和所有其他 HTTP 客户端接口将完全忽略 JavaScript;毕竟它们都不是浏览器。
你想要:
var html = wb.Document.GetElementsByTagName("HTML")[0].OuterHtml;
请注意,如果您通过WebBrowser加载,则不需要抓取原始标记;您可以使用DOM方法,如GetElementById/TagName
等。
while 循环非常 VBScript,您应该将代码连接到一个DocumentCompleted
事件。
private void Whatever()
{
WebBrowser wb = new WebBrowser();
wb.DocumentCompleted += Wb_DocumentCompleted;
wb.ScriptErrorsSuppressed = true;
wb.Navigate("http://stackoverflow.com");
}
private void Wb_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
var wb = (WebBrowser)sender;
var html = wb.Document.GetElementsByTagName("HTML")[0].OuterHtml;
var domd = wb.Document.GetElementById("copyright").InnerText;
/* ... */
}
相关文章:
- 如何使用javascript或html下载PDF格式的填写表单
- 在提交时打开thankyou.html+下载PDF
- HTML锚标记无法在android平台中下载文件
- 链接到 HTML 中的下载
- 文件下载html与错误处理FileNotFound
- 单击跨度下载 html 文件
- C# 在页面加载完成后下载 HTML 字符串
- 如何在安卓中下载 Html 页面及其内部文件
- 从视图源下载html的简单方法,同时保留文件夹结构
- 点击锚标记下载HTML文件
- 在我的桌面区域以XML格式下载HTML表格,只需单击一个按钮
- 在c#中下载html文本区域标签的内容为word或pdf文件
- 无法使用javascript下载html表格
- 下载HTML格式的文本文件
- 我如何使用客户端(javascript)代码创建和下载html文件
- 强制浏览器下载Html页面,而不是呈现它
- 如何在asp.net中点击按钮下载html文件
- 使用标记下载HTML文件
- 下载html页面并绑定到一个变量
- 不能用phantomjs下载html