Help!

PC-Problemen?
De vrijwilligers van Oplossing.be zoeken gratis met u mee!

Hulp bij posten

Recente topics

Auteur Topic: Lotto: punt duizendtallen verwijderen  (gelezen 28528 keer)

0 leden en 1 gast bekijken dit topic.

Offline MollyVH

  • Excel-Expert
  • Oplosser
  • *****
  • Berichten: 847
Re: Lotto: punt duizendtallen verwijderen
« Reactie #120 Gepost op: 13 december 2021, 11:09:03 »
Dag Arnold,

Er is jou al eerder op gewezen dat "Do While .Busy = True Or .readyState <> READYSTATE_COMPLETE" niet het meeste kans op succes geeft.
Toch heb ik het er even op gewaagd en merk dat ik zowat 50% kans heb om het resultaat binnen te halen. In het andere geval krijg ik verderop een foutmelding, dus je zou nog aan de code kunnen toevoegen dat er bij een fout moet herbegonnen worden.

Omdat het allemaal nogal wankel is (en omdat ik straks andere verplichtingen heb), heb ik het als rudimentair testje bij enkel de winsten gehouden.
Bekijk ondertussen misschien al eens hoe het bij jou gaat. Staat dus los van jouw bestand, de winsten komen gewoon in A1:A9.

Mvg,
Molly

Sub lotto_winsten()
    Dim HTML As HTMLDocument, elem As Object
    With CreateObject("InternetExplorer.Application")
        .navigate "https://www.nationale-loterij.be/onze-spelen/lotto/uitslagen-trekking"
        Do While .Busy = True Or .readyState <> READYSTATE_COMPLETE
            DoEvents
        Loop
        Set HTML = .document
        tekst = HTML.getElementsByClassName("table table-striped")(0).innerText
        .Quit
    End With
    spl_tekst = Split(tekst, " ")
    Dim winst(1 To 9)
    For i = 3 To 10
        winst(i - 2) = --Replace(Split(spl_tekst(i), Chr(13))(0), ".", "")
    Next i
    winst(9) = --spl_tekst(11)
    Cells(1, 1).Resize(9) = Application.Transpose(winst)
End Sub
Windows 11 Home NLD 64bit
11th Gen Intel(R) Core(TM) i7-11700 @ 2.50GHz 2496
Aspire TC-1660
Intel(R) UHD Graphics 750 1024MB
476 GB SSD KINGSTON OM8PCP3512F-AA
1863 GB HD Seagate ST2000DM008-2FR102
Office 2021 Professional Plus NLD 64bit

Offline Montagnard

  • Ambassadeur
  • *****
  • Berichten: 2.385
  • Geslacht: Man
  • To Windows or not to Windows , that's the question
Re: Lotto: punt duizendtallen verwijderen
« Reactie #121 Gepost op: 13 december 2021, 11:26:30 »
Dag Molly,
ik was er ondertussen ook mee bezig :
heb dus het binnenhalen van de nummers via de website "https://www.geschenkwensen.be/lotto-uitslagen/" vervangen door de code van "Warme bakkertje" , de winsten én datum haal ik daar nog wél binnen..
en het werkt , ik krijg eerst de cijfers binnen via de ene website (die code van Warme bakkertje heb ik ten overvloede getest en geen enkele keer het het gehaperd) en dan de datum en winst van de andere website.
ik heb zoals U aangeeft ook Uw code geprobeerd in een blanco excel bestand ( wél de Verwijzing naar Microsoft Internet Controls en Microsoft HTML Object Library aangevinkt) , maar ik krijg een foutmelding , zie bijgevoegde screencopy.
ik heb er ook voor het zekerste dat bestandje met Uw code aangehangen.
het zou natuurlijk het beste zijn om zowel de nummers als de datum als de winsten van dezelfde (zoals door U gebruikte) Lotto website te kunnen binnenhalen...
grtjs,
Arnold.

HP ProBook 450 G3 15 inch
OS : Windows 11 Pro NLD 64bit
Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz
16 GB  Vengeance 2666 MHz
KINGSTON SA400S37480G - 447,13 GB als bootdisk
WD Blue Solid state 2 TB - intern - M.2 2280 - SATA als datadisk
AV: Windows Defender
FW: Windows Firewal

Offline Montagnard

  • Ambassadeur
  • *****
  • Berichten: 2.385
  • Geslacht: Man
  • To Windows or not to Windows , that's the question
Re: Lotto: punt duizendtallen verwijderen
« Reactie #122 Gepost op: 13 december 2021, 14:49:55 »
Er is jou al eerder op gewezen dat "Do While .Busy = True Or .readyState <> READYSTATE_COMPLETE" niet het meeste kans op succes geeft.
ja maar ik ben er niet terug over begonnen he , ik had me er al bij neergelegd  ;)
In mijn reactie#113 gaf ik aan dat ik toch voor het zekerste nog een andere versie had aangemaakt (mocht die 'geschenken' website wegvallen).
daarop hebben Warme bakkertje en Veerj gereageerd , misschien omdat zij het toch ook wel een uitdaging vinden , net zoals U blijkbaar ?
mocht ik Jullie kennis hebben , ik denk dat ik dag en nacht zou bezig zijn ermee  ;D...
het hoeft niet echt voor mij , maar mocht het toch lukken om de data van een originele Lotto website te kunnen 'scrapen' dan zou dat geweldig zijn  _/-\o_

grtjs,
Arnold
HP ProBook 450 G3 15 inch
OS : Windows 11 Pro NLD 64bit
Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz
16 GB  Vengeance 2666 MHz
KINGSTON SA400S37480G - 447,13 GB als bootdisk
WD Blue Solid state 2 TB - intern - M.2 2280 - SATA als datadisk
AV: Windows Defender
FW: Windows Firewal

Offline MollyVH

  • Excel-Expert
  • Oplosser
  • *****
  • Berichten: 847
Re: Lotto: punt duizendtallen verwijderen
« Reactie #123 Gepost op: 13 december 2021, 15:08:02 »
Dag Arnold,

Je ziet het, hé, ik ben terug thuis  :D

Citaat
ja maar ik ben er niet terug over begonnen he
OK, maar dat was ook geen kritiek aan jouw adres, maar enkel een manier om mezelf in te dekken  ;) als het ook bij jou niet al te goed zou gaan.
Zoals ik aangaf ("50%") ging het de ene keer wel, de andere keer niet. Vermoedelijk heb je ook meermaals geprobeerd?

Liever dan bij foutmelding te laten herbeginnen heb ik eerst nog een testje gedaan door er een vertraging van 5 seconden op te zetten omdat het mij opviel dat het wel telkens lukte als ik (per definitie traag) met F8 door de code ging.

Aan de rest van de code heb ik dus niets gewijzigd. Minstens 10 keer laten uitvoeren en telkens met succes. Nu jij nog  ;)

Mvg,
Molly

Sub lotto_winsten()
    Dim HTML As HTMLDocument, elem As Object
    With CreateObject("InternetExplorer.Application")
        .navigate "https://www.nationale-loterij.be/onze-spelen/lotto/uitslagen-trekking"
        Application.Wait (Now + TimeSerial(0, 0, 5))
        Do While .Busy = True Or .readyState <> READYSTATE_COMPLETE
            DoEvents
        Loop
        Set HTML = .document
        tekst = HTML.getElementsByClassName("table table-striped")(0).innerText
        .Quit
    End With
    spl_tekst = Split(tekst, " ")
    Dim winst(1 To 9)
    For i = 3 To 10
        winst(i - 2) = --Replace(Split(spl_tekst(i), Chr(13))(0), ".", "")
    Next i
    winst(9) = --spl_tekst(11)
    Cells(1, 1).Resize(9) = Application.Transpose(winst)
End Sub
Windows 11 Home NLD 64bit
11th Gen Intel(R) Core(TM) i7-11700 @ 2.50GHz 2496
Aspire TC-1660
Intel(R) UHD Graphics 750 1024MB
476 GB SSD KINGSTON OM8PCP3512F-AA
1863 GB HD Seagate ST2000DM008-2FR102
Office 2021 Professional Plus NLD 64bit

Offline Montagnard

  • Ambassadeur
  • *****
  • Berichten: 2.385
  • Geslacht: Man
  • To Windows or not to Windows , that's the question
Re: Lotto: punt duizendtallen verwijderen
« Reactie #124 Gepost op: 13 december 2021, 15:23:08 »
hey , het was ook geen kritiek naar U toe he , vandaar mijn  ;).....
het werkt dus he , keer op keer , super  !  \o/
en nu ben ik brutaal : nu nog de lotto nummers en (vooral voor het vervolg van MIJN code) de datum ?  ;D

grtjs,
Arnold.

HP ProBook 450 G3 15 inch
OS : Windows 11 Pro NLD 64bit
Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz
16 GB  Vengeance 2666 MHz
KINGSTON SA400S37480G - 447,13 GB als bootdisk
WD Blue Solid state 2 TB - intern - M.2 2280 - SATA als datadisk
AV: Windows Defender
FW: Windows Firewal

Offline MollyVH

  • Excel-Expert
  • Oplosser
  • *****
  • Berichten: 847
Re: Lotto: punt duizendtallen verwijderen
« Reactie #125 Gepost op: 13 december 2021, 15:46:21 »
Vooruit dan maar, men vraagt en wij...  :D :D :D

Alleen dit: deze 'nieuwe' website is een subpagina van die waar je al de getrokken nummers haalt:
https://www.nationale-loterij.be
https://www.nationale-loterij.be/onze-spelen/lotto/uitslagen-trekking
Daarvan durf ik dus minstens veronderstellen dat ze beide wel zullen blijven bestaan...

Wat de datum betreft dus nog klein toevoegsel (in deze proef dus én winsten én datum)
Sub lotto_winsten_met_datum()
    Dim HTML As HTMLDocument, elem As Object
    With CreateObject("InternetExplorer.Application")
        .navigate "https://www.nationale-loterij.be/onze-spelen/lotto/uitslagen-trekking"
        Application.Wait (Now + TimeSerial(0, 0, 5))
        Do While .Busy = True Or .readyState <> READYSTATE_COMPLETE
            DoEvents
        Loop
        Set HTML = .document
        tekst = HTML.getElementsByClassName("table table-striped")(0).innerText
        tekst2 = HTML.getElementsByClassName("title text-center")(0).innerText
        .Quit
    End With
    spl_tekst = Split(tekst, " ")
    Dim winst(1 To 9)
    For i = 3 To 10
        winst(i - 2) = --Replace(Split(spl_tekst(i), Chr(13))(0), ".", "")
    Next i
    winst(9) = --spl_tekst(11)
    datum = DateValue(Split(Application.Substitute(tekst2, " ", "|", 4), "|")(1))
    Cells(1, 1).Resize(9) = Application.Transpose(winst)
    Cells(1, 2) = datum
End Sub

Bekijk maar eens of je alles, dit samen met de nummers dus, correct samengevoegd krijgt in (toch maar een kopie van) je eigen bestand.

Mvg,
Molly
Windows 11 Home NLD 64bit
11th Gen Intel(R) Core(TM) i7-11700 @ 2.50GHz 2496
Aspire TC-1660
Intel(R) UHD Graphics 750 1024MB
476 GB SSD KINGSTON OM8PCP3512F-AA
1863 GB HD Seagate ST2000DM008-2FR102
Office 2021 Professional Plus NLD 64bit

Offline Montagnard

  • Ambassadeur
  • *****
  • Berichten: 2.385
  • Geslacht: Man
  • To Windows or not to Windows , that's the question
Re: Lotto: punt duizendtallen verwijderen
« Reactie #126 Gepost op: 13 december 2021, 16:09:53 »
ja , wa kan ik nog meer zeggen dan dikke merci  _/-\o_ ?
ik heb alles nu aangepast , de code van 'Warme bakkertje' voor de cijfers en Uw code voor de datum en winst , alles werkt .
ik moet nog kleine aanpassing doen wat de datum betreft maar dat is maar een futiliteit...
ik ga nu mijn bestanden hun versie geven :
V1 = code van Jean-pierre met kopieren en plakken .
V2 = code met https://www.geschenkwensen.be/lotto-uitslagen/ als website
V3 = gemengde code Van Jij en Wb.

ik denk dat één van de mooiste momenten in mijn "computer" leven is , het ontdekken van oplossing.be met zovele belangloze helpers  :thumbsup:

grtjs,
Arnold.
HP ProBook 450 G3 15 inch
OS : Windows 11 Pro NLD 64bit
Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz
16 GB  Vengeance 2666 MHz
KINGSTON SA400S37480G - 447,13 GB als bootdisk
WD Blue Solid state 2 TB - intern - M.2 2280 - SATA als datadisk
AV: Windows Defender
FW: Windows Firewal

Offline JEC

  • Excel-Expert
  • Ervaren lid
  • *****
  • Berichten: 422
Re: Lotto: punt duizendtallen verwijderen
« Reactie #127 Gepost op: 13 december 2021, 20:20:23 »
En nu alles tegelijk. Datum, trekking en winsten

Sub jec()
 Dim ar(1 To 9)
 With CreateObject("InternetExplorer.Application")
   .navigate "https://www.nationale-loterij.be/onze-spelen/lotto/uitslagen-trekking"
   
    Application.Wait DateAdd("s", 4, Now)
    Do While .Busy: DoEvents: Loop
   
    objRes = Split(Replace(.document.getElementsByClassName("Results-cont")(2).innerText, Chr(13), ""), Chr(10))
    strDate = Split(.document.getElementsByTagName("h2")(0).innerText, "van ")(1)
   
    For i = 1 To 9
      ar(i) = .document.getElementsByTagName("nobr")(i - 1).innerText + 0
    Next
   
    With Cells(1, 1)
      .Value = strDate
      .Offset(1).Resize(, UBound(objRes) + 1) = objRes
      .Offset(1).Resize(, UBound(objRes) + 1) = .Offset(1).Resize(, UBound(objRes) + 1).Value
      .Offset(2).Resize(UBound(ar)) = Application.Transpose(ar)
    End With
   
    .Quit
 End With
End Sub

Offline Montagnard

  • Ambassadeur
  • *****
  • Berichten: 2.385
  • Geslacht: Man
  • To Windows or not to Windows , that's the question
Re: Lotto: punt duizendtallen verwijderen
« Reactie #128 Gepost op: 14 december 2021, 08:36:16 »
Goedemorgen !
@Veerj :  _/-\o_ , het werkt perfect , alles geïntegreerd in mijn "programma" en alles werkt , én snel !
ik heb echter 1 klein probleempje , ik heb de code proberen te begrijpen om het zelf aan te passen maar het lukt me niet , hoe ik het moet aanpakken :

Rem vul de cijfers in
        With Cells(4, 4)
      .Offset(1).Resize(, UBound(objRes) + 1) = objRes
      .Offset(1).Resize(, UBound(objRes) + 1) = .Offset(1).Resize(, UBound(objRes) + 1).Value
      End With

Rem vul de winst in
    With Cells(6, 20)
      .Offset(2).Resize(UBound(ar)) = Application.Transpose(ar)
    End With

wat moet er veranderd worden zodat het reserve nummer één cel naar rechts opschuift ? m.a.w. er moet één cel tussen zitten tussen de 6 nummers en het reservenummer ?

Alvast (weeral) dikke merci !

Mvg,
Arnold.


HP ProBook 450 G3 15 inch
OS : Windows 11 Pro NLD 64bit
Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz
16 GB  Vengeance 2666 MHz
KINGSTON SA400S37480G - 447,13 GB als bootdisk
WD Blue Solid state 2 TB - intern - M.2 2280 - SATA als datadisk
AV: Windows Defender
FW: Windows Firewal

Offline MollyVH

  • Excel-Expert
  • Oplosser
  • *****
  • Berichten: 847
Re: Lotto: punt duizendtallen verwijderen
« Reactie #129 Gepost op: 14 december 2021, 10:57:45 »
Dag Arnold,
Het zal jou niet verbazen dat ik, wat Veerj wél voor elkaar heeft gekregen  \o/ , tussendoor ook nog even had geprobeerd, maar ik kwam enkel bij de getallen van de voorgaande trekking uit  :'( , en het vervolgens on hold gezet...

Tussendoor @ Veerj: zie jij het eventueel zitten om kort uit te leggen hoe je de (2) bij 'Results-cont' hebt gevonden? Of is dat gewoon het resultaat van geduldig (blind) zoeken?

Citaat
wat moet er veranderd worden zodat het reserve nummer één cel naar links opschuift ?

Me je echte bestand herinnerend, moet dat niet naar rechts zijn?
In dat geval: als je dat niet nadien op je werkblad wil corrigeren (dat zou ik ook niet willen  ;) ) zal je objRes eerst in de code moeten bewerken.
Je kan een array maken van één element meer (het voorlaatste dan leeg laten en het laatste van objRes in het laatste stoppen)
OF een array maken van één element minder en het reservegetal (objRes(6)) rechtstreeks op je werkblad zetten.

De eerste methode even uitgewerkt:
    'na deze regel
    objRes = Split(Replace(.document.getElementsByClassName("Results-cont")(2).innerText, Chr(13), ""), Chr(10))
    'dit toevoegen
    Dim arr_tr(1 To 8 )       'let op met de spatie achter de 8: die moet weg maar geeft hier anders een smiley, hierna ook nog 2 maal
    For i = 1 To 6
        arr_tr(i) = Val(objRes(i - 1))
    Next i
    arr_tr(8 )= Val(objRes(6))

    'en ipv
    .Offset(1).Resize(, UBound(objRes) + 1) = objRes
    .Offset(1).Resize(, UBound(objRes) + 1) = .Offset(1).Resize(, UBound(objRes) + 1).Value
    'één regel:
    .Offset(1).Resize(,8 ) = arr_tr

Mvg,
Molly
Windows 11 Home NLD 64bit
11th Gen Intel(R) Core(TM) i7-11700 @ 2.50GHz 2496
Aspire TC-1660
Intel(R) UHD Graphics 750 1024MB
476 GB SSD KINGSTON OM8PCP3512F-AA
1863 GB HD Seagate ST2000DM008-2FR102
Office 2021 Professional Plus NLD 64bit

Offline JEC

  • Excel-Expert
  • Ervaren lid
  • *****
  • Berichten: 422
Re: Lotto: punt duizendtallen verwijderen
« Reactie #130 Gepost op: 14 december 2021, 11:38:43 »
Hi Molly,

Gebruik jij internet explorer of chrome om je class/tag elements te vinden?

Offline Montagnard

  • Ambassadeur
  • *****
  • Berichten: 2.385
  • Geslacht: Man
  • To Windows or not to Windows , that's the question
Re: Lotto: punt duizendtallen verwijderen
« Reactie #131 Gepost op: 14 december 2021, 13:46:39 »
hey,
sry voor het nu pas reageren , ik heb de mantelzorg over mijn mama en papa (87 & 92 en nog op zich wonend) , dinsdag is boodschappendag  :).
ik heb de laatste code van Molly dus geïmplementeerd in de code van Veerj en het werkt nu allemaal.
bij deze iedereen bedankt voor het meehelpen aan dit project , maar een speciale dankuwel aan 'MollyVH' en 'Veerj'  _/-\o_
ik vind het een heel mooi project waarvan ik toch aardig wat heb bijgeleerd....
Mvg,
Arnold.
HP ProBook 450 G3 15 inch
OS : Windows 11 Pro NLD 64bit
Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz
16 GB  Vengeance 2666 MHz
KINGSTON SA400S37480G - 447,13 GB als bootdisk
WD Blue Solid state 2 TB - intern - M.2 2280 - SATA als datadisk
AV: Windows Defender
FW: Windows Firewal

Offline MollyVH

  • Excel-Expert
  • Oplosser
  • *****
  • Berichten: 847
Re: Lotto: punt duizendtallen verwijderen
« Reactie #132 Gepost op: 14 december 2021, 13:52:43 »
Hallo Veerj,

Dat deed ik met Chrome (noem het maar een puur automatisme).
Ik heb je vraag meteen als stille wenk opgevat ;) en het even overgedaan met IE maar zie nog niet hoe ik daarmee (dus zonder verder experimenteren) de juiste getallen kan te pakken krijgen  :-[

Mvg,
Molly

@ Arnold,
Net ook je laatste bericht gemerkt. We mogen het dus AF noemen   :D
Je bent niet de enige die graag bijleert, vandaar nog mijn berichtjes voor Veerj  :)
Windows 11 Home NLD 64bit
11th Gen Intel(R) Core(TM) i7-11700 @ 2.50GHz 2496
Aspire TC-1660
Intel(R) UHD Graphics 750 1024MB
476 GB SSD KINGSTON OM8PCP3512F-AA
1863 GB HD Seagate ST2000DM008-2FR102
Office 2021 Professional Plus NLD 64bit

Offline JEC

  • Excel-Expert
  • Ervaren lid
  • *****
  • Berichten: 422
Re: Lotto: punt duizendtallen verwijderen
« Reactie #133 Gepost op: 14 december 2021, 16:10:08 »
Met Chrome gaat het beter ;D. Je zat dus al goed

Als het goed is zie je bij het selecteren van het pagina script ook de selectievelden op de lottopagina meeverspringen.
Wanneer de resultaten van vorige week geselecteerd worden, zie je op de lottowebsite helemaal links(buiten de pagina als het ware) een selectieveld ontstaan. Dat is dus de uitslag van vorige week.

Soms blijkt dat andere class/tag elementen in 1 klap op te halen zijn, waarbij geen gekke datasplitsingen nodig zijn.





Offline Montagnard

  • Ambassadeur
  • *****
  • Berichten: 2.385
  • Geslacht: Man
  • To Windows or not to Windows , that's the question
Re: Lotto: punt duizendtallen verwijderen
« Reactie #134 Gepost op: 14 december 2021, 16:34:57 »
mag ik nog even tussen komen ?
omdat Random toch niet zo random is in VBA (volgens verscheidene bronnen dient het laatste getrokken cijfer als "seed" voor het volgende en zie je toch min of meer een logica) , heb ik een geintje uitgehaald :

bij een "Quick Pick" heb ik i.p.v. de random routine om nummers tussen 1 & 45 te trekken te gebruiken , een werkblad bijgevoegd , daar de Lotto historie gekopieerd , en nu laat ik random een rij kiezen (1 tot 3750+) en kopieer die trekking naar de betreffende rij in het veld met eigen nummers  ;D ;D ;D.
aangezien in die 3750+ trekkingen nog nooit 2 x dezelfde 6 uitgekomen zijn en maar een 5-tal keer 5+ is mijn kans wel héél klein op de grote prijs ?   ::)...
zoals ik al meegaf : een geintje , maar het werkt wel...
grtjs,
Arnold.
HP ProBook 450 G3 15 inch
OS : Windows 11 Pro NLD 64bit
Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz
16 GB  Vengeance 2666 MHz
KINGSTON SA400S37480G - 447,13 GB als bootdisk
WD Blue Solid state 2 TB - intern - M.2 2280 - SATA als datadisk
AV: Windows Defender
FW: Windows Firewal

 


www.combell.com