J'utilise une boucle pour parcourir une page de moteur de recherche afin de collecter des données et, pour une raison quelconque, lorsque je navigue vers la deuxième page de résultats, mon HtmlElementCollection et Regex.Match fonctions merde avec cette erreur:C# HtmlElementCollection Message d'erreur "Accès refusé" à la deuxième itération de la boucle
Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))
Voici une copie de mon code de boucle. Pouvez-vous me conseiller sur la façon de procéder et ce qui pourrait causer le problème?
while (((WebBrowser)browser).Document.GetElementById("pg-next")!=null)
{
//MessageBox.Show("hello");
HtmlElementCollection col = default(HtmlElementCollection);
col = ((WebBrowser)browser).Document.GetElementsByTagName("a");
foreach (HtmlElement e in col)
{
match = Regex.Match(e.GetAttribute("href").ToString(), @"mysite.com", RegexOptions.IgnoreCase);
if (match.Success)
{
this_url = e.GetAttribute("href").ToString();
//MessageBox.Show(this_url);
match = Regex.Match(this_url, @"mysite.com", RegexOptions.IgnoreCase);
this_url = "https://"+match;
//domorestuff
}
if ((e.GetAttribute("innerHTML").ToString().Contains("Next ")))
{
f_perform_operation_on_element (e, "click", null);
f_sleep(2);
}
}
}
Mon seul conducteur de courant, et il pourrait tout à fait tort, est que le htmlelementcollection attend d'avoir les pages précédentes éléments, mais depuis que je suis une toute nouvelle déclare collection quelque chose est se foiré. Je suis vraiment confus.
L'accès est refusé à:
match = Regex.Match(e.GetAttribute("href").ToString(), @"mysite.com", RegexOptions.IgnoreCase);