我正在尝试使用C#剃须刀导航到另一个页面。这是我的代码。但是,根本没有任何反应。似乎该线程根本没有启动:
@using System.Windows.Forms;
@using System;
@using System.Threading;
@{
var message = "";
void runBrowserThread(Uri url)
{
var th = new Thread(()=>
{
var br = new WebBrowser();
br.DocumentCompleted += browser_DocumentCompleted;
Application.Run();
br.Navigate(url);
});
th.SetApartmentState(ApartmentState.STA);
th.Start();
}
void browser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
var br = sender as WebBrowser;
}
Uri uri = new Uri("http://www.google.com");
runBrowserThread(uri);
}
<body>
<span id="myspan">@message</span>
</body>
答案 0 :(得分:2)
在Web应用程序中开始输入using System.Windows.Forms
时,您应该知道自己做错了。
WebBrowser控件在ASP.NET中没有位置。相反,您应该使用HttpClient class向要获取(或“抓取”)页面的HTTP请求。它有一个GetStringAsync method返回响应(如果您请求的资源是网页,则通常为HTML)。
一旦有了HTML,就有几种方法可以解析它。避免使用正则表达式或字符串方法。为此,请使用HtmlAgilityPack或AngleSharp之类的软件包。它们针对解析DOM进行了优化。