trn100 Skrevet 23. januar 2019 Del Skrevet 23. januar 2019 Hei. Jeg holder på med et prosjekt for en hundeklubb, og i den forbindelse trenger jeg en VBA rutine som henter ned noe informasjon fra nettet.Jeg har foreløpig funnet en rutine som åpner IE og finner frem til riktig side, men der stopper det for meg.Rutinen ligger under en knapp i en userform som henter hundens reg.nummer fra en tekstboks ("txtRegnr" i koden). Et aktuelt reg.nr. for testformål er NO36788/12 Sub WebOppslag() Dim appIE As Object Set appIE = CreateObject("InternetExplorer.Application") With appIE .Navigate "https://www.dogweb.no/dogweb/dw/openPage/hundIndex.html?HUID=" & Me.txtRegnr .Visible = True End With Do While appIE.Busy DoEvents Loop End Sub Link til eksempelside: https://www.dogweb.no/dogweb/dw/openPage/hundIndex.html?HUID=NO36788/12 Det jeg trenger å hente ut er Fødselsdato, Kjønn og Land oppe til høyre.Er det mulig å hente ut denne informasjonen uten å åpne nettsiden?Hvis ikke, er det mulig å åpne nettsiden maksimert? Slik koden koden er nå åpnes nettsiden i et vindu. Finnes det kanskje et parameter jeg kan sette inn under .Visible = True?Er er det mulig å hente ut disse 3 informasjonen automatisk og plassere de i celler i Excelarket og kan man eventuelt i VBA lukke websiden etterpå? Veldig takknemlig for tips som kan bringe meg videre Bruker norsk Excel 2016 hvis det har noe å si, men koden må kunne kjøres på 2010 også. Lenke til kommentar
Hårek Skrevet 23. januar 2019 Del Skrevet 23. januar 2019 Å hente ut data fra nettside kalles Web scraping. Kan ingenting om VBA, men se om du finner noe info her: https://stackoverflow.com/questions/27066963/scraping-data-from-website-using-vba Lenke til kommentar
Harald Staff Skrevet 23. januar 2019 Del Skrevet 23. januar 2019 Hei Jeg får ikke noe fornuftig treff på eksempelet ditt, men her er kode for å lese fra web uten å fjernstyre en nettleserinstans: Sub MainSub() Dim MyString As String MyString = GetFromWebpage("https://www.dogweb.no/dogweb/dw/openPage/hundIndex.html?HUID=NO36788/12") MsgBox MyString ' blah blah parsing string code End Sub Function GetFromWebpage(URL As String) As String On Error GoTo Err_GetFromWebpage Dim objWeb As Object Dim strXML As String ' Instantiate an instance of the web object Set objWeb = CreateObject("Microsoft.XMLHTTP") ' Pass the URL to the web object, and send the request objWeb.Open "GET", URL, False objWeb.send ' Look at the HTML string returned strXML = objWeb.responsetext GetFromWebpage = strXML End_GetFromWebpage: ' Clean up after ourselves! Set objWeb = Nothing Exit Function Err_GetFromWebpage: ' Just in case there's an error! MsgBox Err.Description & " (" & Err.Number & ")" Resume End_GetFromWebpage End Function Beste hilsen Harald Lenke til kommentar
trn100 Skrevet 29. januar 2019 Forfatter Del Skrevet 29. januar 2019 (endret) Hei igjen. Beklager sen tilbakemelding! @Hårek: Takk for link! Jeg har vært innom der og tittet, men jeg klarer dessverre ikke å finne ut hvordan jeg får ut de dataene jeg trenger? @Harald: Takk for kode! Det er helt klart det beste om jeg slipper å gå veien via en nettleser! Jeg har testet koden din og den henter ut data fra siden, men av en eller annen grunn finner jeg ikke de dataene jeg trenger i nedlastingen? Jeg kan dessverre minimalt om HTML og klarer ikke å lese den informasjonen jeg får ut, men legger ved 3 bilder her. Bilde 1 er utseende på siden, bilde 2 er kilden hentet fra i IE og bilde 3 er kilden hentet i Chrome som er min standardleser i fall det er forskjell på disse og at det påvirker hva som hentes? Det ser ut til at koden din henter det samme som jeg får opp når jeg viser sidekilden i Chrome. Endret 29. januar 2019 av trn100 Lenke til kommentar
Hårek Skrevet 29. januar 2019 Del Skrevet 29. januar 2019 @Hårek: Takk for link! Jeg har vært innom der og tittet, men jeg klarer dessverre ikke å finne ut hvordan jeg får ut de dataene jeg trenger? Kan dessverre ikke hjelpe, har ikke så mye erfaring med scraping. Det jeg kan si er at det er en god del jobb med prøving og feiling, og man må forstå en del HTML. Man kan f.eks få navigert fram til de relevante seksjonene ved å søke på tekst i "id=" Lenke til kommentar
NoBo Skrevet 29. januar 2019 Del Skrevet 29. januar 2019 Har du vurdert Excel sin motor for innhenting av data fra eksterne kilder? Kalt 'Power Query' i Office 2010/2013, i Excel 2016/2019 kalt 'Hent og Transformer' (engelsk: 'Get & Transform')? Da slipper du å programmere for å hente ut rådataene dataene. 'Hent og transformer' er innebygget i Excel 2016+ men må hentes ned til Office 2010/13. Litt info fra Microsoft om Hent og transformer. Sidenote: Enkelte webeiere liker ikke at man driver med 'Web scraping' fra deres nettisder. Har du vurdert å høre med NKK om de har en mer offisiell metode (API?) for å få tak i dataene du trenger? Lenke til kommentar
trn100 Skrevet 30. januar 2019 Forfatter Del Skrevet 30. januar 2019 Takk for tips og linker NoBo! Joda, jeg ar forsøkt den innebygde metoden, men den stopper med en feilmelding uten å hente data. Muligens fordi siden ligger bak et passordbeskyttet område? Dette kan også være årsaken til at Haralds kode ikke virker og at jeg allikevel må gå via en webleser for å få hentet ut data. Den jeg lager applikasjonen til sitter i hovedstyret i NRK og har selvsagt anledning til å bruke disse dataene. Jeg ønsker bare å gjøre det enklere for vedkommende og sjekke/oppdatere informasjon slik at vedkommende slipper å logge seg på nett og søke frem informasjonen manuelt. Databanken drives så vidt jeg har forstått av en 3-part, slik at eventuelle andre måter å få data på som involverer de med sikkerhet vil medføre kostnader. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå