Extraire données de plusieurs pages wikipédia

Bonjour, je souhaiterais extraire des données de plusieurs pages wikipédia mais je n'arrive pas à faire ce que je veux. Je travaille en sociologie politique et mon but est d'extraire des informations contenue dans les tableaux "Liste des maires" sur la page de chaque village.
J'ai réussi à faire une macro pour extraire les informations dont j'ai besoin pour un village, mais je n'arrive pas à faire en sorte que la macro automatise le processus pour la liste des adresses internet des communes (que j'ai extraite via une regexextract).

Sub Macro2()

Dim i as Integer
For i =1 to 1000
adresse=Sheets("Feuil1").Cells(i,1)

    With Sheets("importation").QueryTables.Add(Connection:= _
        "URL;adresse", _
        Destination:=Sheets("importation").Range("$A$1"))
        .Name = "Dury_(Aisne)"
        .FieldNames = True
        .RowNumbers = True
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .WebSelectionType = xlEntirePage
        .WebFormatting = xlWebFormattingNone
        .WebPreFormattedTextToColumns = True
        .WebConsecutiveDelimitersAsOne = True
        .WebSingleBlockTextImport = False
        .WebDisableDateRecognition = False
        .WebDisableRedirections = False
        .Refresh BackgroundQuery:=False
    End With

Dim ligne0 As Integer
compteur0 = 0
For ligne0 = 1 To 5000
If Left(Sheets("importation").Cells(ligne0, 1), 12) = "Code commune" Then
compteur0 = compteur0 + 1
Sheets("données").Cells(i, 1) = Sheets("importation").Cells(ligne0, 2) 'code insee de la commune
If compteur0 = 1 Then Exit For
End If
Next

Dim ligne As Integer
For ligne = 1 To 5000
If Left(Sheets("importation").Cells(ligne, 2), 8) = "En cours" Then
Sheets("données").Cells(i, 2) = Sheets("importation").Cells(ligne, 1) 'date de début de mandat du maire
Sheets("données").Cells(i, 3) = Sheets("importation").Cells(ligne, 3) 'nom du maire
Sheets("données").Cells(i, 4) = Sheets("importation").Cells(ligne, 4) 'étiquette politique
End If
ligne = ligne + 1
Next

Next
End Sub

Voilà le code que j'ai utilisé, j'aimerais tout simplement remplacer l'URL page le contenu d'une cellule. J'ai vu plusieurs solutions sur d'autres questions du forum mais je n'arrive pas du tout à les appliquer ou même les comprendre. Le fichier que j'ai utilisé en PJ

Merci à tous ceux qui voudront bien m'aider :)

26sociologie-maire.xlsm (269.47 Ko)

Bonjour,

Ci joint une proposition, presque complète.

"Presque", parce que le problème avec wikipédia, c'est que tout n'est pas renseigné d'une part, et d'autre part, parce que les informations saisies ne sont pas toutes bâties sur le même canevas, donc il y a des écarts de construction d'une page à l'autre.

Après avoir essayer une multitude de fois de contourner chaque différence, j'ai fini par abandonner et vous livre le résultat tel qu'il est, il reste quelques zones mal renseignées, mais je n'irai pas au-delà car je n'en voyais plus la fin. Vous pourrez corriger ces quelques petites anomalies manuellement, ça ne vous prendra pas beaucoup de temps, le plus gros étant fait.

Le principe utilisé est différent de celui que vous aviez commencé à faire, ici, on ne fait pas une copie de la feuille extraite de Wikipédia pour aller récupérer les infos, mais on va chercher directement les informations dans le code HTML, donc sans ouvrir Wikipédia, ce qui est un gain de temps considérable, mais malgré cela, ça prends quand même 2 minutes pour tout rapatrier.

Allez sur la feuille "données" et cliquez sur le bouton jaune.

Cdlt

Edit:

Important, avant de commencer, enregistrez le fichier dans le répertoire de votre choix.

Bonjour,

C'est vraiment incroyable, je n'aurais jamais réussi à le faire tout seul ! pour les données manquantes ou qui fonctionnent mal, ce n'est vraiment pas grave en tout cas.

J'ai juste une question parce que j'essaye de changer ta formule depuis hier mais je n'y arrive pas, parce que j'aimerais avoir la date du début de ses mandats (généralement la première cellule de la dernière ligne de leurs tableaux), et pas la date juste après "en cours". J'essaye avec les expressions régulières et tout mais ca ne marche pas.

En tout, cas, merci encore, je vois que ca a du prendre beaucoup de temps !

Bonjour,

Voilà, là aussi ce n'est pas parfait, mais le résultat est correct.

Cdlt

Vraiment merci beaucoup, ca va me faire gagner un mois de travail sur mon mémoire ! Merci beaucoup !

Rechercher des sujets similaires à "extraire donnees pages wikipedia"