Pobieranie danych ze strony internetowej
Wyciąganie danych ze stron internetowych może przydać się specjalistom HR, finansistom marketingowcom. Grupy można wymieniać w nieskończoność, dlatego warto zobaczyć przykład makra, które pozwoli na pobranie danych ze strony internetowej dot. kursu walut.
Wyciąganie informacji ze strony internetowej – po co?
Wyciąganie danych ze stron internetowych może przydać się specjalistom HR, finansistom marketingowcom. Grupy można wymieniać w nieskończoność, dlatego warto zobaczyć przykład makra, które pozwoli na pobranie danych ze strony internetowej dot. kursu walut.
Oczywiście można to zrobić ręcznie, jednak napisanie makra umożliwiające taką operację zdecydowanie bardziej przyspieszy pobieranie danych z Internetu. Przykładem będzie pobranie ogłoszeń o pracę do arkusza kalkulacyjnego Excel przy pomocy języka VBA.
Pobieranie danych ze strony - makro
- Pierwszym krokiem, który należy wykonać jest dołączenie odpowiedniej biblioteki. W tym celu w oknie edytora VBA wybieramy Tools, później References.
Rys.1
- Kolejny krok to zaznaczenie opcji Microsoft HTML Object Library oraz Microsoft Internet Controls.
Rys.2
- Po zaakceptowaniu ustawień przyciskiem OK proszę w oknie projektu utworzyć nowy moduł.
Rys.3
- Przed przystąpieniem do napisania kodu, należy odpowiednio się do tego przygotować. Dane będą ściągane ze strony http://www.gumtree.pl/fp-oferty-pracy/c8. Po wejściu na stronę należy wyświetlić źródło strony oraz zlokalizować elementy, które chcemy pobrać. W programie Firefox po naciśnięciu klawisza F12 pojawia się narzędzie, przy pomocy którego można pobrać odpowiednie informacje. Po lewej stronie na samej górze jest prostokąt ze strzałką.
Rys.4
- W momencie kliknięcia na nią możemy wskazać ten element który chcemy zobaczyć w źródle strony.
Rys.5
- Zauważmy, że po rozwinięciu otrzymamy dostęp do informacji, które chcemy pobrać.
Rys.6
- Podobnie postępujemy z opisem strony.
Rys.7
- Mając informacje które klasy są odpowiedzialne za przechowywanie żądanych danych, można przystąpić do napisania kodu. Na początku warto zadeklarować zmienne i uzupełnić je wartościami
Dim ie As InternetExplorer
Dim i As Long
i = 2
Set ie = New InternetExplorer
- Zmienna ie będzie odpowiedzialna za przechowywanie obiektu strony internetowej, natomiast zmienna I będzie zmienną pomocniczą przechowującą informacje gdzie należy umieścić dane w arkuszu kalkulacyjnym. Zmienna ie jest zmienną obiektową, dlatego można zmienić jej kilka właściwości. Pierwszym celem jest uwidocznienie przeglądarki internetowej (dla celów testowych, w zastosowaniach biznesowych ustawia się na widoczność na False). Kolejnh etap to navigacja do określonej witryny internetowej (metoda navigate).
ie.Visible = False
ie.navigate "http://www.gumtree.pl/fp-oferty-pracy/c8"
- Strona internetowa nie zostanie od razu załadowana, dlatego należy sprawdzić, czy taka sytuacja nastąpiła. Realizuje się to za pomocą polecenia
Do While ie.readyState <> 4
DoEvents
Loop
- Po załadowianiu się strony można przystąpić do pracy. W tym celu zastosowano instrukcję sterującą w postaci pętli For Each, która przechodzi przez każdy węzeł (znacznik) strony.
For Each el In ie.document.all
Next
- W zależności od napotkanego znacznika, należy podjąć odpowiednie akcje. Identyfikacja węzłów jest wykonana przy pomocy instrikcji warunkowej If.
If el.className = "ar-title" Then
Cells(i, 1) = el.innerText
End If
If el.className = "ar-descr" Then
Cells(i, 2) = el.innerText
i = i + 1
End If
- Właściwość innerText pozwala na pobranie wyłącznie wartości tekstowych. Po zakończeniu pracy można poinformować użytkownika o zakończonej pracy.
MsgBox "Dziękujemy za skorzystanie z makra"
- Na koniec warto pamiętać o dobrych praktykach programowania i wyczyścić obiekt strony internetowej
Set ie = Nothing
Autorem artykułu jest Grzegorz Plak, trener Cognity.