cognity

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. 

06 grudnia 2015
blog

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.

pobieranie danych

Rys.1

 

  • Kolejny krok to zaznaczenie opcji Microsoft HTML Object Library oraz Microsoft Internet Controls.

pobieranie danych

Rys.2

 

  • Po zaakceptowaniu ustawień przyciskiem OK proszę w oknie projektu utworzyć nowy moduł.

pobieranie danych 3

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ą.

pobieranie 4

Rys.4

 

  • W momencie kliknięcia na nią możemy wskazać ten element który chcemy zobaczyć w źródle strony.

pobieranie danych 5

Rys.5

 

  • Zauważmy, że po rozwinięciu otrzymamy dostęp do informacji, które chcemy pobrać.

pobieranie danych 6

Rys.6

 

  • Podobnie postępujemy z opisem strony.

pobieranie danych 7

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.

 

icon

Formularz kontaktowyContact form

Imię *Name
NazwiskoSurname
Adres e-mail *E-mail address
Telefon *Phone number
UwagiComments