Web ブラウザーを使用して、いくつかの Web ページにアクセスし、いくつかの情報を取得しようとしています。これにより、ログインの詳細が記憶されます。ここまではうまくいきましたが、複数の URL の場合、Web ブラウザーのドキュメントの読み込みが適切に機能しません。
私の意図は、url->ロードするまで待つ->必要なデータをテキストに取得する->新しいurlと同じプロセスに行くことでした。
for ループを使用して URL を変更しましたが、渡されたすべての URL を 1 つずつ実行すると、ドキュメントが読み込まれてテキストに書き込まれるまで待機しませんでした。私を助けてください。
private void button1_Click_1(object sender, EventArgs e)
{
String text = File.ReadAllText("links.txt");
var result = Regex.Split(text, "\r\n|\r|\n");
foreach (string s in result)
{
listBox1.Items.Add(s);
}
for (int i = 0; i < listBox1.Items.Count; i++)
{
this.Text = Convert.ToString(i + 1) + "/" + Convert.ToString(listBox1.Items.Count);
textBox1.Text += listBox1.Items[i];
String url = textBox1.Text;
webBrowser2.ScriptErrorsSuppressed = true;
webBrowser2.DocumentCompleted += webBrowser2_DocumentCompleted;
webBrowser2.Navigate(url);
}
}
void webBrowser2_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
string sourceCode = webBrowser2.DocumentText;
try
{
/*someregax expressions to filter text */
StreamWriter sw = new StreamWriter("inks_info.txt", true);
sw.Write("url" + "~" + sourceCode + "\n");
sw.Close();
textBox1.Text = "";
}
catch
{
StreamWriter sw = new StreamWriter("inks_fail.txt", true);
sw.Write(textBox1.Text + "\n");
sw.Close();
textBox1.Text = "";
}
}