Worksheet.nl  

Ga terug   Worksheet.nl > Excel Overig > Downloads



Status bericht: Niet in behandeling
Reageren
 
LinkBack Discussietools Weergave
  #1  
Oud 26 juni 2011, 20:52
alphamax's schermafbeelding
Mega Senior Member
 
Geregistreerd: 8 april 2008
Locatie: weert
Berichten: 1.674
Lightbulb tour de france webquery alle uitslagen

importeer met internet explorer alle uitslagen van de tour de france (eigenlijk is het geen webquery omdat de code op buttons klikt en dat kan een webquery niet)

werkt voor de jaren 2007 tot en met 2011
werkt met internet explorer 8
de proloog is soms etappe 0
als het importeren niet goed verloopt kan het helpen om de vertraging hoger te zetten

in de etappe's waar punten worden gehaald, moet je wel aan het eind alle punten optellen om een totaal voor die etappe te krijgen

update 1: code aangepast aan de nieuwe html-opmaak van Tour de France 2011

commercieel gebruik van de gegevens van Tour de France 2011 is niet toegestaan

Code:
Option Explicit

Private Sub CommandButton1_Click()

Dim clngvbNullString As Long
Dim avntJersey As Variant
Dim avntStanding  As Variant
Dim avntStage  As Variant
Dim iavntJersey As Long
Dim iavntStanding As Long
Dim iavntStage As Long
Dim lngCol As Long
Dim lngRow  As Long
Dim objHTML1 As Object
Dim objHTML2 As Object
Dim objIE As Object
Dim objWorksheet As Object
Dim strStage As String

With Application
    .Calculation = xlCalculationManual
    .DisplayAlerts = False
    .ScreenUpdating = False
End With

avntStanding = Array("G", "Algemeen", "E", "Etappe") 'id's in html-broncode en tab-namen
avntJersey = Array("IT", "Individueel", "IP", "Punten", "ET", "Ploegen", "IM", "Berg", "IJ", "Jongeren") 'id's in html-broncode en tab-namen

For Each objWorksheet In Worksheets 'wis alle bladen behalve "Invoer"
    If objWorksheet.Name <> "Invoer" Then
        objWorksheet.Delete
    End If
Next

Set objIE = CreateObject("InternetExplorer.Application") 'maak verbinding met internet explorer
objIE.Navigate "http://www.letour.fr/" & CStr(Range("C2").Value) & "/TDF/LIVE/us/" & CStr(100 * Range("C3").Value) & "/classement/index.html" 'maak verbinding met website
objIE.Visible = True 'maak internet explorer zichtbaar
Do While objIE.Busy Or objIE.readyState <> 4 'wacht tot internet explorer klaar is
    DoEvents
Loop

Set objHTML1 = objIE.document 'lees document
For iavntStanding = 0 To UBound(avntStanding) Step 2 'doorloop rangschikkingen
    objHTML1.getElementbyid(avntStanding(iavntStanding)).Click 'klik rangschikking
    Application.Wait (Now + TimeValue("0:00:0" & Range("C4").Value)) 'wacht
    Set objHTML2 = objHTML1.getElementbyid("detailDiv").document 'lees document
    For iavntJersey = 0 To UBound(avntJersey) Step 2 'doorloop trui
        objHTML2.getElementbyid(avntJersey(iavntJersey)).Click 'klik trui
        Application.Wait (Now + TimeValue("0:00:0" & Range("C4").Value)) 'wacht
        Do
            strStage = objHTML1.getElementbyid("contentDetailDyn").innertext 'lees text in html-broncode
        Loop Until strStage <> vbNullString And strStage <> "Loading..." 'niet leeg en niet "Loading"
        avntStage = Split(strStage, vbCrLf) 'opdelen
        With Worksheets.Add(, Worksheets(Worksheets.Count)) 'voeg tabblad toe
            .Name = avntStanding(iavntStanding + 1) & "_" & avntJersey(iavntJersey + 1) 'stel naam van tabblad in
            lngRow = 1 'rij am_2011
            lngCol = 0 'kolom
            clngvbNullString = 0 'aantal lege regels na elkaar
            For iavntStage = 0 To UBound(avntStage) 'doorloop text
                Select Case avntStage(iavntStage)
                    Case Is = "<div class='errormess'><activez_javascript:></div>" 'einde (sub)tabel
                        lngRow = lngRow + 1 'volgende rij
                        lngCol = 0 'kolom
                    Case Is <> vbNullString
                        lngCol = lngCol + 1 'volgende kolom
                        .Cells(lngRow, lngCol).Value = avntStage(iavntStage) 'schrijf data
                        clngvbNullString = 0 'aantal lege regels na elkaar
                    Case Is = vbNullString
                        clngvbNullString = clngvbNullString + 1 'aantal lege regels na elkaar
                End Select
                If clngvbNullString = 3 Then 'wanneer het aantal lege regels na elkaar 3 is, is de rij kompleet
                    lngRow = lngRow + 1 'volgende rij
                    lngCol = 0 'kolom
                    clngvbNullString = 0 'aantal lege regels na elkaar
                End If
            Next
            .Rows(1).Delete 'verwijder eerste rij (individual points team climber youth)
            .Columns("A:F").AutoFit 'automatisch kolombreedte
        End With
    Next
Next

objIE.Quit

Set objWorksheet = Nothing
Set objHTML2 = Nothing
Set objHTML1 = Nothing
Set objIE = Nothing

With Application
    .Calculation = xlCalculationAutomatic
    .DisplayAlerts = True
    .ScreenUpdating = True
End With

End Sub

Laatst gewijzigd door alphamax; 5 augustus 2011 om 20:29
Met citaat reageren
Sponsored Links
  #2  
Oud 2 juli 2011, 15:13
alphamax's schermafbeelding
Mega Senior Member
 
Geregistreerd: 8 april 2008
Locatie: weert
Berichten: 1.674
Standaard

werkt ook in 2011

Laatst gewijzigd door alphamax; 10 juli 2011 om 13:14
Met citaat reageren
  #3  
Oud 14 juli 2011, 14:36
Junior Member
 
Geregistreerd: 15 januari 2007
Berichten: 4
Standaard

Ik probeer dit uit op mijn Mac maar ik krijg het niet aan de praat. Gaarne een oplossing
Met citaat reageren
  #4  
Oud 14 juli 2011, 21:05
alphamax's schermafbeelding
Mega Senior Member
 
Geregistreerd: 8 april 2008
Locatie: weert
Berichten: 1.674
Standaard

ik kan de code niet verbeteren omdat ik geen mac heb
het probleem zit waarschijnlijk in de getElementbyid
je mag van mij rustig de code of het bestand op een mac-forum plaatsen om je vraag alsnog beantwoordt te krijgen
Met citaat reageren
  #5  
Oud 16 juli 2011, 09:12
alphamax's schermafbeelding
Mega Senior Member
 
Geregistreerd: 8 april 2008
Locatie: weert
Berichten: 1.674
Standaard

volg eens deze discussie http://www.worksheet.nl/forumexcel/v...el-2011-a.html het omzetten van windows naar mac gaat niet altijd even vlekkeloos, voor mij is dit nieuw maar we zijn nu aan het leren
Met citaat reageren
  #6  
Oud 4 augustus 2011, 21:38
Junior Member
 
Geregistreerd: 10 juli 2007
Locatie: Oisterwijk
Berichten: 24
Standaard

Goedenavond,

wanneer ik een jaar kies en vervolgens het nummer van de etappe, wordt IE opgezocht en wordt er door de verschillende 'truien' gebladerd, maar de tabbladen in Excel worden niet gevuld. Is het mogelijk om daar de rugnummers en/of de namen van de renners te krijgen?

MVG
Michael
Met citaat reageren
  #7  
Oud 4 augustus 2011, 22:14
alphamax's schermafbeelding
Mega Senior Member
 
Geregistreerd: 8 april 2008
Locatie: weert
Berichten: 1.674
Standaard

als alles goed werkt krijg je net zo een overzicht als wanneer je het bestand voor de eerste keer geopend hebt
afgelopen tour de france heeft het allemaal goed gewerkt

Citaat:
werkt voor de jaren 2007 tot en met 2011
de proloog is soms etappe 0
als het importeren niet goed verloopt kan het helpen om de vertraging hoger te zetten
bij een tragere verbinding kan je de vertraging ophogen van 1 seconde naar 3, of 5, of 7 seconden

de code leunt zwaar op de html-opbouw van de site, misschien dat daar iets veranderd is, en het daarom niet werkt
Met citaat reageren
  #8  
Oud 4 augustus 2011, 22:27
Junior Member
 
Geregistreerd: 10 juli 2007
Locatie: Oisterwijk
Berichten: 24
Standaard

Hoi Alphamax,

ik begrijp je antwoord. De site van de TDF wordt ook weer netjes afgesloten en de tabbladen zijn weer toegevoegd aan de sheet. Maar ze zijn allemaal leeg. Ik had hier data (uitslagen, rugnummers, namen renners) verwacht of is dat niet de juiste verwachting?

MVG
Michael
Met citaat reageren
  #9  
Oud 4 augustus 2011, 22:32
alphamax's schermafbeelding
Mega Senior Member
 
Geregistreerd: 8 april 2008
Locatie: weert
Berichten: 1.674
Standaard

ja, dat klopt

de code maakt eerst alle bladen leeg, voordat deze weer gevuld worden

maar heb je de vertraging hoger gemaakt, hierdoor heeft programma de tijd om de gegevens binnen te halen
Met citaat reageren
  #10  
Oud 4 augustus 2011, 22:50
alphamax's schermafbeelding
Mega Senior Member
 
Geregistreerd: 8 april 2008
Locatie: weert
Berichten: 1.674
Standaard

het lijkt erop dat er in de tussentijd iets op de site veranderd is, dit moet ik nog uitzoeken en aanpassen
Met citaat reageren
Reageren


Discussietools
Weergave

Regels voor berichten
Je mag geen nieuwe discussies starten
Je mag niet reageren op berichten
Je mag geen bijlagen versturen
Je mag niet je berichten bewerken

BB code is Aan
Smileys zijn Aan
[IMG]-code is Aan
HTML-code is Uit
Trackbacks are Aan
Pingbacks are Aan
Refbacks are Aan



Ga terug   Worksheet.nl > Excel Overig > Downloads


Soortgelijke discussies
Discussie Auteur Forum Reacties Laatste bericht
tour de france weert Afgehandelde vragen 3 19 maart 2011 21:28
Tour de France 2010 deneus6 Afgehandelde vragen 5 26 april 2010 08:37
Tour De France 2008 R.kwakman Suggesties / Ideeën / Nieuwe Ontwikkelingen 3 19 juli 2008 00:30
Tour de france poule theo5464 Afgehandelde vragen 3 10 juli 2008 13:39
Tour de france uitslagen verwerken rob1986 Afgehandelde vragen 2 3 juli 2007 00:01


Alle tijden zijn GMT +2. Het is nu 23:48.


Forumsoftware: vBulletin®, versie 3.8.7
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.6.0