Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

VBA skiranje podatka sa interneta putem MSXML2.XMLHTTP60

[es] :: Office :: Excel :: VBA skiranje podatka sa interneta putem MSXML2.XMLHTTP60

[ Pregleda: 1086 | Odgovora: 12 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Blue82
dipl. ecc.

Član broj: 165981
Poruke: 838
*.dynamic.sbb.rs.



+322 Profil

icon VBA skiranje podatka sa interneta putem MSXML2.XMLHTTP6004.10.2020. u 11:12 - pre 42 meseci
U prilogu se nalazi primer koji me muči.
Pokušavam podatak o kursu NBS da skinem sa sajta NBS.RS po dve metodologije (primer je banalan, ne treba mi stvarno taj kurs koji se može skinuti na drugačiji način).

Po metodologiji 1, uz pomoć kontrole Internet Explorera dođem bez problema do tabele koja sadrđi taj podatak i ispisujem tabelu u Excel-ovom sheet-u.

Po metodologiji 2, uz pomoć MSXML2.XMLHTTP60, da bi se izbeglo korišćenje Internet Explorera na isti način ne vidim traženu tabelu. Po čemu se razlikuju te 2 metode, i kako u sub-u Metodologija 2 da pronađem tabelu koja sadrži kurs EUR kao što sam uradio u sub-u Metodologija 1?
Pretpostavljam da je problem u liniji metodologije 2:
Code:
XMLDoc.body.innerHTML = XMLPage.responseText


pošto kada posle nje izlistam
Code:
XMLDoc.body.innerText
ne dobijem podatak iz tabele koju tražim, pa mi deluje da on nije ni preuzet i zato ne mogu da ga nadjem.




[Ovu poruku je menjao Blue82 dana 04.10.2020. u 14:09 GMT+1]
Prikačeni fajlovi
 
Odgovor na temu

Jpeca
Predrag Jovanović
poslovni analitičar
Gowi
Pančevo

Moderator
Član broj: 25683
Poruke: 2267
*.mediaworksit.net.

Sajt: www.gowi.rs


+109 Profil

icon Re: VBA skiranje podatka sa interneta putem MSXML2.XMLHTTP6004.10.2020. u 21:34 - pre 42 meseci
Ne znam da ti odgovorim na pitanje - iz debuga izgleda kao da je responseText nekompletan ima 6 tabela sa id news ali ova prva sa kursnom listom nedostaje i kompletan prvi deo.
Što se praktičnog dela tiče za izvlačenje podataka sa web stranica postoji alat Data > Get Data > From Other Sources > From Web, koji radi jako lepo sa tabelama na strani. Postoji mogućnost transformacija podataka iz pronađenih tabela tako da se direktno prebace u željeni oblik, bez potrebe za makroima. (Za komplikovanije slučajeve može da se koristi jezik M u transformacijama).
https://www.youtube.com/watch?...qY&ab_channel=LeilaGharani

Nije to loše Rembrante, samo što ne bi dodao još malo boje?
 
Odgovor na temu

djux66
Beograd

Član broj: 66577
Poruke: 74
*.amres.ac.rs.

Sajt: www.mmveriga.co.rs


+9 Profil

icon Re: VBA skiranje podatka sa interneta putem MSXML2.XMLHTTP6005.10.2020. u 08:23 - pre 42 meseci
HTML za kurs evra ti se poziva sa druge adrese, ako otvoriš web developer tools i odeš na network pa uradiš refresh stranice nbs.rs, videćeš da se nakon nbs.rs poziva i

https://nbs.rs/static/nbs_site.../kurs/Indikativni_Kurs_20.html

Probaj sa tom adresom, pa vidi dal onda možeš da pronađeš tabelu.
 
Odgovor na temu

Jpeca
Predrag Jovanović
poslovni analitičar
Gowi
Pančevo

Moderator
Član broj: 25683
Poruke: 2267
*.mediaworksit.net.

Sajt: www.gowi.rs


+109 Profil

icon Re: VBA skiranje podatka sa interneta putem MSXML2.XMLHTTP6005.10.2020. u 08:45 - pre 42 meseci
Uspeo sam sa tvojim kodom da izvučem "kompletnu" stranicu u clipboard. Ne znam zašto se ne prikazuje kompleta u XMLDoc.body.innerHTML.Međutim i ova kompletna stranica nema tabelu sa kursom. Koliko sam shvatio ona se popunjava kroz javascript sa adrese koju je naveo djux66 (ima latinična, ćiriličan i enlish verzija)

U svakom slučaju mislim da vredi da pogledaš alat koji sam ti naveo ja tako dobijem tabelu sa adrese koju si naveo bez problema.

Nije to loše Rembrante, samo što ne bi dodao još malo boje?
 
Odgovor na temu

Blue82
dipl. ecc.

Član broj: 165981
Poruke: 838
87.116.167.*



+322 Profil

icon Re: VBA skiranje podatka sa interneta putem MSXML2.XMLHTTP6005.10.2020. u 14:46 - pre 42 meseci
Evo me konacno. Na zalost dok vi radite ja ne mogu ovde a kad vi ne radite ja mogu da svratim.

@Jpeca poznati su mi oni alati, no mene zanima vba programiranje pa sam naleteo na ovaj problem koji nisam umeo da rastumacim zasto nastaje. Primetio sam i sam da jedan izvestaj skida jednu tabelu manje, ali ne znam razlog. No resenje je verovatno u ovome sto prica @djux66, mada mi nije jasno zasto sa XMLDoc.body.innerHTML ne skida celu stranicu al eto sada znam da i to moze da se desi.

EDIT:
@djux66 probao sam sa tvojom adresom i tu uredno nadje podatke. Naucili smo jos nesto.
Hvala oboma.
 
Odgovor na temu

Blue82
dipl. ecc.

Član broj: 165981
Poruke: 838
*.dynamic.sbb.rs.



+322 Profil

icon Re: VBA skiranje podatka sa interneta putem MSXML2.XMLHTTP6005.10.2020. u 15:25 - pre 42 meseci
U prilogu sam stavio novi fajl.
Sitno sam modifikovao program i u Metodologiji 1 pokusam da prikazem kursnu listu na dan 04.10.2020. godine, i to radi pomoću IE.

U metodologiji 2 pokušavam isto, ali kada kažem Element.Click, umesto da klikne na dugme posle koga treba da prikaže listu, dobijem sistemsku poruku gde me pita sa kojim programom želim da odem na link.
Može li se to nekako preskočiti?


[Ovu poruku je menjao Blue82 dana 05.10.2020. u 18:05 GMT+1]
Prikačeni fajlovi
 
Odgovor na temu

3okc
Χoᴘᴦoѡ

Moderator
Član broj: 811
Poruke: 1318

Jabber: 3okc@elitesecurity.org


+116 Profil

icon Re: VBA skiranje podatka sa interneta putem MSXML2.XMLHTTP6010.10.2020. u 12:08 - pre 42 meseci
Umesto odgovora, preporućio bih ti kanal WiseOWL koji ima nekih 8 podužih videa na temu preuzimanja podataka sa veba, putem Excel VBA.

vid062 Part 46 - Querying Web Pages using Query Tables
47:06 https://www.youtube.com/watch?v=ZrPEAljQjRM

vid063 Part 47.1 - Browsing to Websites and Scraping a Web Page
86:00 https://www.youtube.com/watch?v=dShR33CdlY8

vid064 Part 47.2 - Scraping Website Tables and Clicking Links
48:48 https://www.youtube.com/watch?v=eq2ATGKN_jk

vid065 Part 47.3 - Internet Explorer vs XML HTTP Request
36:30 https://www.youtube.com/watch?v=R0xpDLzVcuw

vid066 Part 47.4 - Logging in to a Website with Windows Security
25:39 https://www.youtube.com/watch?v=Oxx6t6BEJAw

vid067 Part 47.5 - Basic HTTP GET and POST Requests
52:39 https://www.youtube.com/watch?v=qE8r7S95oTg

vid068 Part 48 - Web Scraping Across Multiple Pages
60:08 https://www.youtube.com/watch?v=sGw6r5GVA5g

vid069 Part 49 - Downloading Files from Websites
69:12 https://www.youtube.com/watch?v=JPezrWwvsJM

Ili vidi sam plejlistu koja je skromno naslovljena kao "uvod u VBA" ali ima stvari koje nigde drugde nisam video.
https://www.youtube.com/playli...s-AWhQzckr8Dgmgb3akx_gFMnpxTN5

Have you found helpful examples, solutions or ideas-in-work, please consider the
following:
• Citation of *actual page* you are going to using is welcome.
• Have you saw "Value Added" examples you are going to incorporate to your
profitable blog, daily job or any money making venture: How about online donation?
↗Ana & Vlade Divac Foundation
Hvala!
 
Odgovor na temu

Blue82
dipl. ecc.

Član broj: 165981
Poruke: 838
*.dynamic.sbb.rs.



+322 Profil

icon Re: VBA skiranje podatka sa interneta putem MSXML2.XMLHTTP6011.10.2020. u 19:57 - pre 42 meseci
Možda sam nešto prevideo, ali ja ne videh ni jedan primer sa klikom na dugme koristeći MSXML2.XMLHTTP60.
Sve su klikovi na hyperlink koji su mi poznati. Ima dobrih primera za proširivaje razmišljanja povodom teme "Scraping Website" ali nisam pronašao odgovor na moje pitanje.
 
Odgovor na temu

Blue82
dipl. ecc.

Član broj: 165981
Poruke: 838
*.static.isp.telekom.rs.



+322 Profil

icon Re: VBA skiranje podatka sa interneta putem MSXML2.XMLHTTP6014.10.2020. u 07:20 - pre 42 meseci
Pokušao sam na osnovu primera sa gore pomenutog sajta da odradim isto preko POST Requests.

U suštini uspeo sam to da uradim na više različitih sajtova i radi ali sajt NBS-a se po nečemu razlikuje i ne znam zbog čega kod njega ne dobijam rezultat koji tražim.
U prilogu je primer sa par redova koda, pa u koliko neko ima živaca i vremena da pogleda u čeku je problem.

Program bi trebalo da zatraži kursnu listu na dan i da na desktopu snimi stranicu da se vidi rezultat (da li smo dobili traženu stranicu).
Umesto kursne liste na dan dobijam početnu stranicu gde se očekuje da upišem podatke za koji dan tražim kursnu listu.
Prikačeni fajlovi
 
Odgovor na temu

Blue82
dipl. ecc.

Član broj: 165981
Poruke: 838
*.static.isp.telekom.rs.



+322 Profil

icon Re: VBA skiranje podatka sa interneta putem MSXML2.XMLHTTP6015.10.2020. u 08:55 - pre 42 meseci
Da li niko ne zna ili ne stižete pogledati?
U suštini me zanima i šta može da bude teoretski pa da znam u kom pravcu da tražim.
Na 99% sajtova po ovoj metodologiji uspem da dođem do traženog podatka a sajt NBS-a iako mi po svemu deluje da je običan i da ne odskače od drugih pravi problem.
 
Odgovor na temu

bokinet

Član broj: 29844
Poruke: 574



+50 Profil

icon Re: VBA skiranje podatka sa interneta putem MSXML2.XMLHTTP6016.10.2020. u 07:17 - pre 41 meseci

Kurs NBS
https://nbs.rs/static/nbs_site.../kurs/Indikativni_Kurs_20.html

Primer preuzimanja sadrzaja i parsovanja istog nakon preuzimanja u VBA.
Na slican nacin preradidi parsovanje sadrzaja NBS.

Code:


Public Function GetWebContent(ByVal ThisUrl As String) As String

    Dim r As String
    Dim Http As Object
    
    On Error GoTo ErrHandler
    
    r = ""
    
    ' Create new instance of object
    Set Http = CreateObject("MSXML2.XMLHTTP")
    
    ' Get content from given url using GET method
    Http.Open "GET", ThisUrl, False
    
    ' Setnd request
    Http.send
    
    ' Get response
    r = Http.responseText
    
    ' Free memory resource
    Set Http = Nothing
    
    ' Return value
    GetWebContent = r

Exit Function
ErrHandler:
    Debug.Print Now, "GetWebContent()", Err.Number, Err.Description
    ' Return value
    GetWebContent = ""
End Function

Public Sub HtmlParse()

    ' TOOLS -> References -> Add Reference 'Microsoft HTML Object Library'

    On Error GoTo ErrHandler

    Dim Html As HTMLDocument
    Dim Topics As Object
    Dim TitleElem As Object
    Dim DetailsElem As Object
    Dim Topic As HTMLHtmlElement
    Dim i As Integer

    ' Create new instance of object
    Set Html = New HTMLDocument
    
    ' Get and set web content as HTML content
    Html.body.innerHTML = GetWebContent("https://news.ycombinator.com/")
    
    ' Get all topic elements
    Set Topics = Html.getElementsByClassName("athing")
    
    i = 2
    
    For Each Topic In Topics
        
        Set TitleElem = Topic.getElementsByTagName("td")(2)
        
        Sheets(1).Cells(i, 1).Value = TitleElem.getElementsByTagName("a")(0).innerText
        Sheets(1).Cells(i, 2).Value = TitleElem.getElementsByTagName("a")(0).href
        
        Set DetailsElem = Topic.NextSibling.getElementsByTagName("td")(1)
        
        Sheets(1).Cells(i, 3).Value = DetailsElem.getElementsByTagName("span")(0).innerText
        Sheets(1).Cells(i, 4).Value = DetailsElem.getElementsByTagName("a")(0).innerText
        
        i = i + 1
        
    Next
    
    ' Free memory resource
    Set Topic = Nothing
    Set DetailsElem = Nothing
    Set TitleElem = Nothing
    Set Topics = Nothing
    Set Html = Nothing
    
Exit Sub
ErrHandler:
    
    ' Free memory resource
    Set Topic = Nothing
    Set DetailsElem = Nothing
    Set TitleElem = Nothing
    Set Topics = Nothing
    Set Html = Nothing
    
    ' Show message
    MsgBox "HTML parsing error." & vbCrLf & "Error " & Err.Number & " - " & Err.Description, vbExclamation, "Html Parse"
    
End Sub


 
Odgovor na temu

Blue82
dipl. ecc.

Član broj: 165981
Poruke: 838
*.static.isp.telekom.rs.



+322 Profil

icon Re: VBA skiranje podatka sa interneta putem MSXML2.XMLHTTP6016.10.2020. u 09:29 - pre 41 meseci
@bokinet hvala za primer, no nije mi cilj da skinem kurs EUR (umem to da uradim na više načina), nego me zanima baš po konkretnoj metodologiji iz mog primera, zašto funkcioniše na 99,9% sajtova sa kojih sam probao da skinem podatak a na sajtu NBS ne funkcioniše.

Ne vidim da se sajt NBS-a razlikuje i po čemu od drugih sajtova, deluje potpuno obično ali definitivno postoji neka caka za koju ja ne znam, vezana za njega.
 
Odgovor na temu

bokinet

Član broj: 29844
Poruke: 574



+50 Profil

icon Re: VBA skiranje podatka sa interneta putem MSXML2.XMLHTTP6017.10.2020. u 13:43 - pre 41 meseci
Pa tako su oni odlucili a i opet sama strana je tako koncipirana da odredjene stvari povlaci sa razlicitih strana/izvora unutar iste.

Ovaj html sto vuce za kurs on moze da bude kesiran pa se ne generise stalno tj. verovatno azurira se jednom dnevno.

S' druge strani svaki put kada se nakaci korisnik na nbs, tj na prvi stranu koja izlazi onda se taj sadrzaj generise u letu... da bi smanjili i/o na serveru i workload onda su to tako resili.

Ovo nije nista novo i toga ima i na stranim siteovima.

Sve vise sada se rade node.js i serverside javascript based web servisi i aplikacije pa tako po neki put eto se upadne u nerazumevanje server strane.

Predlazem da uzmete da to recimo isto probate da uradite u recimo dot.net ili php okruzenju i rezultati vas mozda i iznenade.
 
Odgovor na temu

[es] :: Office :: Excel :: VBA skiranje podatka sa interneta putem MSXML2.XMLHTTP60

[ Pregleda: 1086 | Odgovora: 12 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.