Scrape svg met VGA

Status
Niet open voor verdere reacties.

Bram65

Gebruiker
Lid geworden
25 feb 2023
Berichten
112
Beste,
Ik ben al dagen op zoek naar een oplossing voor mijn probleem.
Ik schrijf macro's in VBA. Daarmee scrape ik websites welke in Chrome worden geladen.
Om dat met Chrome werkend te krijgen moet men Selenium installeren, heb ik dus gedaan.
Ik heb inmiddels een macro die mijn Essent verbruik dagelijks inleest en in Excel verwerkt,
ik ben dus niet geheel vreemd met deze materie.
Maar ook webpagina's van Kinomap worden ingelezen en dat gaat perfect.
Weet je niet wat Kinomap is, kijk even op Youtube.
Ik gebruik bij het sporten video's van dat bedrijf, ik heb daar een lifetime account gekocht.

Nu mijn probleem:
Bij deze video, https://videos.kinomap.com/en/watch/8ug2mx is onderin het scherm een groen schema getoond.
Dat schema geeft het percentage stijging/daling weer, samen met de tijd waarop dat gebeurt.
Ga er met de muis over heen en je zult de popup's zien verschijnen.
Ik heb inmiddels een stukje code gemaakt die de muiscursor van links naar rechts over dat schema beweegt, in stappen van 5 pixels, zodat alle wijzigingen
in percentage, een voor een zichtbaar worden.
Ik zou die twee waarden, percentage en tijd, bij elke stap willen inlezen en die in een txt bestand willen opslaan.
Ik zou dan met die data in een te maken userform, leuke dingen kunnen doen welke ik kan gebruiken tijdens het sporten.

Code:
For i = 1 To .FindElementsByTag("div").Count
...For J = 1 To .FindElementsByTag("div")(i).FindElementsByTag("svg").Count
......For K = 1 To .FindElementsByTag("div")(i).FindElementsByTag("svg")(J).FindElementsByTag("text").Count
.........For L = 1 To .FindElementsByTag("div")(i).FindElementsByTag("svg")(J).FindElementsByTag("g")(K).FindElementsByCss("text").Count
............For M = 1 To .FindElementsByTag("div")(i).FindElementsByTag("svg")(J).FindElementsByTag("g")(K).FindElementsByTag("text")(L).FindElementsByTag("tspan").Count
................'Hier zou ik de 2 x tspan tekst willen uitlezen
............Next M
.........Next L
......Next K
...Next J
       Next i

Normaal gesproken lukt het me altijd wanneer ik bovenstaande gebruik (zonder puntjes uiteraard) maar in dit geval, zodra ik de svg-tag aanroep, gaat het fout.
Ook wanneer ik direct naar de tspan-tag ga, krijg ik de melding dat die niet bestaat.
Dus: S = .FindElementByXPath("/html/body/div/div[3]/div/svg/g[7]/text/tspan[1]").text wordt niet gevonden.

code Kinomap.JPG

1.JPG

2.JPG

Ik hoop dat iemand me hiermee wil helpen,
gr Bram
 
Laatst bewerkt door een moderator:
In deze url, zie https://player.kinomap.com/loadData/8ug2mx, zit een JSON.
Onder de key "gradeSections" zitten de stijgingspercentages.

Je kan dus de URL https://videos.kinomap.com/en/watch/8ug2mx aanpassen naar de URL https://player.kinomap.com/loadData/8ug2mx om de JSON te krijgen.

Meestal worden alle gegevens op een site via databestand mee verzonden.
Het is dus makkelijker om dat databestand op te sporen en in te lezen.
Dan de hele webpagina in te laden en daar enkele gegevens uit te filteren.
 
Laatst bewerkt:
Dank u voor uw snelle reactie. Ik heb idd de link zoals u die heeft geadviseerd geopend en idd het percentage gevonden.
Dat ziet er dus alsvolgt uit:
{"sec_position":488.985,"sec_length":3256.916,"sec_slope":-0.88}

Hier kan ik wel iets mee. Ik ga ermee aan de slag. Nogmaals dank.

Update:


gr Bram
 

Bijlagen

Laatst bewerkt:
BesteAlphamax, uit die data heb ik inmiddels veel meer gehaald dan oorspronkelijk mijn bedoeling was, nogmaals dank.

Nu heb ik de video nogmaals geopend in Chrome en het script inspecteren.
Maar ik vind nergens een url https://player.kinomap.com/loadData

Kunt u mij zeggen hoe u aan deze url komt, waar u deze heeft gevonden?
Gewoon om te weten maar zeker ook in het geval men die site ooit gaan wijzigen en de url wijzigt.

gr Bram
 
Ik heb geen chrome maar firefox, maar dat maakt niet veel uit

Open de chrome dev tools door op F12 te drukken, zie https://developer.chrome.com/docs/devtools/open/
Log de network activity, zie https://developer.chrome.com/docs/devtools/network/
Zorg dat de button met "XHR" aangeklikt is.
Als de pagina opnieuw geladen is door op F5 te drukken, dnt staat daar een json-bestand tussen wat "8ug2mx" heet.
Klik je die aan dan komt aan de rechterkant extra info, daar staat ergens "https://player.kinomap.com/loadData/8ug2mx" tussen.

Ik kan het niet precies uitleggen, je moet maar wat proberen.
Als je er net zoveel tijd in steekt als selenium te leren (wat ook niet makkelijk is), dan lukt dit ook.
 
Goedemorgen, dank voor uw reactie.
Ik ga hiermee aan de gang en door de duidelijke uitleg kom ik ook hier zeker uit.

Selenium is nu eenmaal een vereiste wanneer je Chrome gebruikt en websites wil scrapen.
En ja....... dan zal je wel moeten.

Nogmaals dank, u heeft mij bijzonder goed geholpen.

gr Bram
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan