c#控制台应用程序WebBrowser ReadyState从未完成
我使用WebBrowser从某个网页上删除数据,该网页的javascript加载持续了5-8秒。(wb.ReadyState!=WebBrowserReadyState.Complete)永远不会发生。怎么可能呢c#控制台应用程序WebBrowser ReadyState从未完成,c#,asp.net,console-application,C#,Asp.net,Console Application,我使用WebBrowser从某个网页上删除数据,该网页的javascript加载持续了5-8秒。(wb.ReadyState!=WebBrowserReadyState.Complete)永远不会发生。怎么可能呢 public static String data { get; set; } [STAThread] static void Main(string[] args) { string pathToWrite = @"C:\ABC.csv"; string nodeli
public static String data { get; set; }
[STAThread]
static void Main(string[] args)
{
string pathToWrite = @"C:\ABC.csv";
string nodelist = @"C:\WebPagelist.txt"; //{"001", "abc.com/mvc/001" /r/n "002", "abc.com/mvc/002" /r/n "003", "abc.com/mvc/003" /r/n ... "499", "abc.com/mvc/499"}
string line;
using (StreamReader reader = new StreamReader(nodelist, Encoding.UTF8))
{
while ((line = reader.ReadLine()) != null)
{
string[] node = line.Split('\t');
Download(node[0], node[1]);
}
}
using (var PlayerFile = new StreamWriter(pathToWrite, true))
{
PlayerFile.Write(data);
PlayerFile.Flush();
}
}
static void Download(string cityName, string url)
{
WebBrowser wb = new WebBrowser();
wb.ScriptErrorsSuppressed = true;
wb.Navigate(url);
while (wb.ReadyState != WebBrowserReadyState.Complete)
{
Application.DoEvents();
}
string A = wb.Document.GetElementById("cur_A").InnerText;
string B = wb.Document.GetElementById("cur_B").InnerText;
string C = wb.Document.GetElementById("cur_C").InnerText;
data += A + "," + B +"," + C + + Environment.NewLine;
}
看到了吗:我看到了
asp.net
和控制台应用程序
被标记,但这看起来像是一个WinForms应用程序。您应该执行Debug.WriteLine(wb.ReadyState)
和Thread.Sleep(100)
,以便在while
循环中进行调试。这也可以被重写,以利用wb.DocumentCompleted
事件并阻止线程,直到该事件发生(最好为此打开一个新线程/任务)