WebBrowser - empty DocumentText
本文关键字:DocumentText empty WebBrowser | 更新日期: 2023-09-27 18:18:04
我正在尝试使用WebBrowser
类,但当然它不起作用。
WebBrowser browser = new WebBrowser();
browser.Navigate("http://www.google.com");
while(browser.DocumentText == "")
{
continue;
}
string html = browser.DocumentText;
browser.DocumentText
总是""
。为什么?
您应该使用DocumentCompleted
事件,如果您没有WebForms应用程序,也可能需要ApplicationContext
static class Program
{
[STAThread]
static void Main()
{
Context ctx = new Context();
Application.Run(ctx);
// ctx.Html; -- your html
}
}
class Context : ApplicationContext
{
public string Html { get; set; }
public Context()
{
WebBrowser browser = new WebBrowser();
browser.AllowNavigation = true;
browser.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(browser_DocumentCompleted);
browser.Navigate("http://www.google.com");
}
void browser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
Html = ((WebBrowser)sender).DocumentText;
this.ExitThread();
}
}
如果您将其更改为以下内容,则WebBrowser不会在当前线程完成工作之前完成它的工作:
WebBrowser browser = new WebBrowser();
browser.Navigate("http://www.google.com");
browser.Navigated += (s, e) =>
{
var html = browser.DocumentText;
};
变量将被设置。
但是,正如其他人所提到的,文档完成是一个更好的事件,因为在那个时候,整个文档将完成(适当的名称!)
WebBrowser browser = new WebBrowser();
browser.Navigate("http://www.google.com");
browser.DocumentCompleted += (s, e) =>
{
var html = browser.DocumentText;
html.ToString();
};
附加到DocumentCompleted
事件,代码如下
browser.DocumentCompleted += (s, e) =>
{
string html = browser.DocumentText;
};
如果你需要DocumentText,你应该处理DocumentCompleted事件
browser.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(browser_DocumentCompleted);
见下面的事件
void browser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
WebBrowser wb = (WebBrowser)sender;
string text = wb.DocumentText;
}
试试这样
string url = string.Empty:
string html = "http://www.google.com/";
string url = html;
if (!url.StartsWith("http://") && !url.StartsWith("https://"))
{
url = "http://" + url;
}
browser.Navigate(new Uri(url));
在While循环中替换它