Bonjour,
J'ai un programme qui doit me permettre de parser des pages Internet, mais j'ai du mal avec le changement de pages.
Description du problème :
Mon programme se compose d'une TextBox qui contient une URL, d'un bouton pour y accéder, d'un WebBrowser et d'un bouton qui parse la page HTML pour en extraire les données.
Je veux qu'après avoir parsé une page, l'URL change, que la nouvelle page soit affichée, pour être parsée à son tour, et ainsi de suite.
Voici le code du bouton qui parse la page, et qui est censé charger la nouvelle page après avoir terminé (note : quand on appelle cette procédure, le Browser est déjà affiché avec une première URL):
Or mon problème, c'est que la nouvelle page ne s'affiche pas. Ou plutôt elle ne s'affiche que si je sors de la Procédure. Comme si le WebBrowser attendait la fin de la procédure pour se rafraîchir.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click ' On met dans Code_HTML le code source de la page qui est affichée dans le WebBrowser Dim Code_HTML As String = WebBrowser1.DocumentText Dim Equipiers(1000) As Equipier ' On parse la page pour en extraire les données intéressantes Traite_Page(Code_HTML, Equipiers) MessageBox.Show("Fin du parsing de la page") ' On veut passer une nouvelle URL au WebBrowser Dim url_2010 As New System.Uri(TextBox2.Text.Replace("2011-2012", "2010-2011")) WebBrowser1.Url = url_2010 ' On attend tant que la page n'est pas chargée. Dim attente As System.Windows.Forms.WebBrowserReadyState attente = WebBrowser1.ReadyState While attente = WebBrowserReadyState.Loading System.Threading.Thread.Sleep(1000) End While ' La page est chargée Code_HTML = WebBrowser1.DocumentText ' On parse la nouvelle page Traite_Page(Code_HTML, Equipiers) MessageBox.Show("Fin du parsing pour l'année 2010") [ ... et on continue ainsi de suite ... ]
Donc, comment, dans la procédure, dire au WebBrowser qu'il doit travailler de son coté, sans attendre la fin de la procédure ?
Merci d'avance pour votre aide.
Partager