Browser compatibility

Status
Niet open voor verdere reacties.

DutchOirs

Gebruiker
Lid geworden
30 sep 2009
Berichten
721
Goedenmiddag,

Zit met een vraagje maar weet niet of ik hem hier of op het VBA application forum moet zetten.
Maar eerst het voorwoord. :)

In 2010 een "Lotto" club opgericht. Speelden met een hele ploeg mee en ondergetekende regelde alle zaken.
Ben aanhanger van VBA en heb in Excel een heel mooi program ontwikkeld.
Was zo ver dat voor een trekking dowloaden alleen een druk op de knop genoeg was en excel deed alles.
Tot vorige week. Wat blijkt de Lotto heeft hun website veranderd. adres was:

https://www.lotto.nl/cspublish/Sate...ekkingsuitslag&cid=1242282182034&pagename=LTW

en is geworden: https://lotto.nederlandseloterij.nl/

als ik in m'n webquery dit aanpas komt de foutmelding : Je Browser staat in de compatibility modus.
Internet afgezocht en volgende oplossing gevonden: http://www.avant.nl/compatibiliteitsweergave-internet-explorer-11/
Maar helaas dit werkt niet.

Is er iemand die hier ervaring mee heeft?

Al many thanks.

Vr. Gr.

Dutch
 
Met een voorbeeldbestand wordt je sneller en beter geholpen.
 
Hoi AlphaMax,

sorry dat ik ze 2x gepost had hier. Wist eigenlijk niet waaronder het valt.

Webquery valt eigenlijk onder VBA dacht ik.

Maar goed, heb ff een voorbeeldje erbij geplaatst.

Hierop staan zowel het oude adres als het nieuwe.

Gebruik explorer 11 en bij de webquery aanmaken komt deze foutmelding.

Vr. Gr.

Dutch
 

Bijlagen

  • Webquery Lotto V #2017.03.00.xls
    36 KB · Weergaven: 39
Thanks AlpaMax,

Ben ik mooi klaar mee.

Zou Microsoft z´n explorer niet daarop aan gaan passen bij de volgende update
 
Zonder webquery, zet de code in de module van het blad.
Lotto getallen en kleur in cel A1 en verder naar rechts.
Code:
[SIZE=1]Option Explicit

Public Sub TrekkingsuitslagLottoNL()
    Dim avntDiv As Variant
    Dim lngRow As Long
    Dim objDiv As Object
    Dim objDivs As Object

    Cells(1, 1).CurrentRegion.ClearContents

    With CreateObject("InternetExplorer.Application")
        .Visible = True
        .Navigate "https://lotto.nederlandseloterij.nl" 'am_2017
        Do
            DoEvents
        Loop While .Busy And .ReadyState <> 4
        Set objDivs = .Document.GetElementsByTagName("div")
        lngRow = 0
        For Each objDiv In objDivs
            If objDiv.ClassName = "draw-current-lotto" Then
                lngRow = lngRow + 1
                avntDiv = Split(objDiv.InnerText, vbCrLf)
                Cells(lngRow, 1).Resize(1, UBound(avntDiv)).Value = avntDiv
            End If
        Next
        .Quit
    End With

    With Cells(1, 1).CurrentRegion
        .Value = .Value
        .Columns.AutoFit
    End With

End Sub[/SIZE]
 
Laatst bewerkt:
Hoi AlphaMax,

Thanks man,

Ben er ff mee aan het stoeien, zie de site (lotto) openen en gelijk weer sluiten.
En de cijfers staan daar?

Heb de code in een module gezet, zoals gezegd en het werkt maar hoe?

Dacht dat alleen met een Webquery dat kon

Ga er zo nog ff mee door..
 
Deze code doet precies wat een webquery in excel ook ook doet en zelfs nog wat meer, het laat alle voor jou overbodige gegevens achterwege.
Dit soort code is een voorbeeld van "webscraping".
Code voor webscraping moet wel elke keer op maat gemaakt worden, je moet weten naar welke "sleutels" je moet zoeken op de webpagina van de lotto.
 
Laatst bewerkt:
Deze code doet precies wat een webquery in excel ook ook doet en zelfs nog wat meer, het laat alle voor jou overbodige gegevens achterwege.
Dit soort code is een voorbeeld van "webscraping".
Code voor webscraping moet wel elke keer op maat gemaakt worden, je moet weten naar welke "sleutels" je moet zoeken op de webpagina van de lotto.

ok dus geen Webquery, maar WebScraping. :)

Wordt wel moeilijker om hier bepaalde Tools uit te halen.
Voordeel van die Webquery was dat je een bepaald segment kopieert naar je excel blad en hieruit gegevens haalde. Was overzichtelijker.


1e: plek waar getallen neergezet wordt krijg ik niet eens voor elkaar :-( Heb geprobeerd Cells(1, 1).CurrentRegion te veranderen in Cells(30, 27).CurrentRegion, maar
getallen komen op dezelfde plek maar nu als tekst. Is dit zo te maken dat ik dit kan aanpassen?

2e: 3- 4 keer in de maand is er 1 trekking, laatste trekking zijn er altijd 2. is dit zo te fabriceren dat ie dan beidde neerzet?

Code:
Public Sub TrekkingsuitslagLottoNL()
    Dim avntDiv As Variant
    Dim lngRow As Long
    Dim objDiv As Object
    Dim objDivs As Object

    Cells(1, 1).CurrentRegion.ClearContents
'    Cells(30, 27).CurrentRegion.ClearContents       ' Rij 30 kolom AA
    

    With CreateObject("InternetExplorer.Application")
        .Visible = True
        .Navigate "https://lotto.nederlandseloterij.nl" 'am_2017
        Do
            DoEvents
        Loop While .Busy And .ReadyState <> 4
        Set objDivs = .Document.GetElementsByTagName("div")
        lngRow = 0
        For Each objDiv In objDivs
            If objDiv.ClassName = "draw-current-lotto" Then
                lngRow = lngRow + 1
                avntDiv = Split(objDiv.InnerText, vbCrLf)
                Cells(lngRow, 1).Resize(1, UBound(avntDiv)).Value = avntDiv
            End If
        Next
        .Quit
    End With

    With Cells(1, 1).CurrentRegion
 '   With Cells(30, 27).CurrentRegion
    
        .Value = .Value
        .Columns.AutoFit
    End With

End Sub
 
Laatst bewerkt:
1:
Verander
Code:
lngRow = 0
in
Code:
lngRow = 29
Verander
Code:
Cells(lngRow, 1).Resize(1, UBound(avntDiv)).Value = avntDiv
in
Code:
Cells(lngRow, 27).Resize(1, UBound(avntDiv)).Value = avntDiv

2:
Code:
For Each objDiv In objDivs
en
Code:
lngRow = lngRow + 1
zorgen ervoor dat er op "superzaterdag" twee regels met lotto getallen komen te staan.
 
Laatst bewerkt:
1:
Verander
Code:
lngRow = 0
in
Code:
lngRow = 29
Verander
Code:
Cells(lngRow, 1).Resize(1, UBound(avntDiv)).Value = avntDiv
in
Code:
Cells(lngRow, 27).Resize(1, UBound(avntDiv)).Value = avntDiv

2:
Code:
For Each objDiv In objDivs
en
Code:
lngRow = lngRow + 1
zorgen ervoor dat er op "superzaterdag" twee regels met lotto getallen komen te staan.

Die laatste 2 zorgen op die laatste zaterdag (kan dat sturen) voor die 2 trekkingen.
Komen die dan onder elkaar?

heb deze ff geprobeerd en komen op de juiste plek, alleen als tekst.
 
Zal het aangepaste ff neerzetten:

Code:
Public Sub TrekkingsuitslagLottoNL()
    Dim avntDiv As Variant, lngRow As Long, objDiv As Object, objDivs As Object

    Cells(1, 1).CurrentRegion.ClearContents

    With CreateObject("InternetExplorer.Application")
        .Visible = True
        .Navigate "https://lotto.nederlandseloterij.nl" 'am_2017
        Do
            DoEvents
        Loop While .Busy And .ReadyState <> 4
        Set objDivs = .Document.GetElementsByTagName("div")
  '      lngRow = 0
        lngRow = 29
        
        For Each objDiv In objDivs
            If objDiv.ClassName = "draw-current-lotto" Then
                lngRow = lngRow + 1
                avntDiv = Split(objDiv.InnerText, vbCrLf)
  '              Cells(lngRow, 1).Resize(1, UBound(avntDiv)).Value = avntDiv
                Cells(lngRow, 27).Resize(1, UBound(avntDiv)).Value = avntDiv
            End If
        Next
        .Quit
    End With

    With Cells(1, 1).CurrentRegion
        .Value = .Value
        .Columns.AutoFit
    End With
End Sub

Dit moet lukken hoop ik.
Waar komen deze codes vandaan? ook VBA? gebruik zelf nog excel 2003.
 

Bijlagen

  • Webquery Lotto V #2017.03.01.xls
    43 KB · Weergaven: 52
Laatst bewerkt:
Goedemorgen alphamax,

Ben er ff mee aan het stoeien geweest

Is dus wel VBA, maar er blijven toch wel een paar vraagjes over.
Heb in het file (vba) uitleg er achter gezet.
File iets veranderd voor gebruik.
Code:
DoEvents - Draagt de uitvoering over aan het besturingssysteem zodat andere gebeurtenissen kunnen worden verwerkt.     [[COLOR="#FF0000"]dus hieronder kies je het juiste onderdeel c.q. getallen?[/COLOR]]

Set objDivs = .Document.GetElementsByTagName("div") [COLOR="#FF0000"]' weet niet?  Wijst een objectverwijzing toe aan een variabele of eigenschap.[/COLOR]

If objDiv.ClassName = "draw-current-lotto" Then   [COLOR="#FF0000"]' weet niet[/COLOR]

avntDiv = Split(objDiv.InnerText, vbCrLf)       [COLOR="#FF0000"][/COLOR][COLOR="#FF0000"]' weet niet?  Geeft een op nul gebaseerde, een-dimensionale matrix die een opgegeven aantal subtekenreeksen bevat.[/COLOR]
Neem aan dat bij de laatste trekking v/d maand er 2 trekkingen onder elkaar worden neergezet.
Kan dit helaas niet testen, maar moet afwachten tot laatste zaterdag v/d maand.

Op zich een mooi systeem en modernere versie van Webquery. Een Webquery maken kon ik al, maar weet ff niet hoe ik dit moet aanpakken?
Kun je me enige uitleg hierover geven?

Alvast veel dank voor de moeite, ben hiermee al heel blij..

Vr. Gr.

Dutch

ps. vergeet nog iets. Spelen ook mee met het Cijferspel.
Voor de Lotto getallen moet dit op https://lotto.nederlandseloterij.nl zijn zoals hierboven en dat werkt, maar voor het Cijferspel moet je op
het oude adres zijn. https://lotto.nederlandseloterij.nl/lotto/trekkingenIndex.html
Is dit zo te maken dat ie dat ook meeneemt?

Al many thanks
 

Bijlagen

  • Webquery Lotto V #2017.03.02.xls
    44,5 KB · Weergaven: 44
Laatst bewerkt:
Open in website "https://lotto.nederlandseloterij.nl" in internet explorer
Druk op F12 (er springt een venster open)
Druk op CTRL+1 (je ziet nu de html-code van de website)

.Document.GetElementsByTagName("div"), objDiv.ClassName = "draw-current-lotto" en objDiv.InnerText zoeken naar bepaalde eigenschappen in de html-code van de website.
Elke site is verschillend, het vergt ervaring om precies te weten waar je moet zoeken.
 
Hoi Alphamax,

Vandaag ff gezocht op internet en zie div. Scraping voorbijkomen.

De vraag is, kan je in excel 2003 ook Scraping maken/gebruiken.
 
Laatst bewerkt:
Geen enkel probleem, de code zou zonder problemen ook moeten lopen onder excel2003.
 
.
ok thanks en om alle gegevens te verkrijgen heb je daarvoor nog een ander prog. nodig of kan alles onder VBA van excel?
 
Laatst bewerkt:
.
Weet je ook een goeie site met uitleg over scraping (in het nederlands)
 
Alles kan onder VBA van excel.
Nee er is geen nederlandse uitleg, wel engelse en dan ook nog meestal toegespitst op andere programmeertalen van VBA zoals python
"webscraping" vergt specialisatie en is niet voor beginners.
 
Code:
[SIZE=1]Public Sub TrekkingsuitslagCijferspelNL()

    Cells(1, 1).CurrentRegion.ClearContents

    With CreateObject("InternetExplorer.Application")
        .Visible = True
        .Navigate "https://lotto.nederlandseloterij.nl/lotto/trekkingenIndex.html"    'am_2017
        Do
            DoEvents
        Loop While .Busy And .ReadyState <> 4
        Cells(1, 1).Value = .Document.GetElementById("draw-current-digits-output").InnerText
        .Quit
    End With

    With Cells(1, 1).CurrentRegion
        .Value = .Value
        .Columns.AutoFit
    End With

End Sub[/SIZE]
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan