Selenium można sklasyfikować jako narzędzie do automatyzacji, które ułatwia pobieranie informacji ze stron internetowych HTML w celu wykonywania skrobania sieci za pomocą Google Chrome.
W tym samouczku dowiesz się:
Co to jest zgarnianie danych przy użyciu selenu?
Jak przygotować makro Excela przed skrobaniem danych przy użyciu Selenium?
Jak otworzyć Google Chrome za pomocą VBA?
Jak otworzyć stronę internetową w Google Chrome za pomocą VBA?
Jak pobrać informacje ze strony internetowej za pomocą VBA?
Jak przygotować makro Excela przed skrobaniem danych przy użyciu Selenium?
Istnieją pewne warunki wstępne, które należy spełnić na pliku makr programu Excel przed przystąpieniem do procesu pobierania danych w programie Excel.
Te warunki wstępne są następujące: -
Krok 1) Otwórz makro oparte na programie Excel i uzyskaj dostęp do opcji programisty programu Excel.
Krok 2) Wybierz opcję Visual Basic na wstążce dewelopera.
Krok 3) Włóż nowy moduł.
Krok 4) Zainicjuj nowy podprogram i nazwij go test2.
Sub test2 ()Napis końcowy
Poniżej przedstawiono wyniki w module: -
Krok 5) Otwórz opcję odniesienia w zakładce narzędzi i odwołaj się do biblioteki typów Selenium. Do modułu należy odwoływać się do następujących bibliotek, ponieważ pomaga to w otwieraniu Google Chrome i ułatwia tworzenie skryptów makr.
Teraz plik Excel jest gotowy do interakcji z przeglądarką internetową. Następnym krokiem byłoby włączenie skryptu makra, który ułatwiłby pobieranie danych w HTML.
Jak otworzyć Google Chrome za pomocą VBA?
Oto krok, aby otworzyć Google Chrome za pomocą VBA
Krok 1) Zadeklaruj i zainicjalizuj zmienne w podprogramie, jak pokazano poniżej
Sub test2 ()Dim driver jako nowy webdriverDim rowc, cc, columnC jako liczba całkowita
Krok 2) Aby otworzyć Google Chrome przy użyciu selenu i VBA, napisz driver.start "chrome" i naciśnij F5 .
Poniżej byłby kod.
Sub test2 ()Dim driver jako nowy webdriverDim rowc, cc, columnC jako liczba całkowitaDriver.start „Chrome”Aplikacja.Wait Now + Timevalue („00:00:20”)Napis końcowy
Wynik modułu byłby następujący: -
Jak otworzyć stronę internetową w Google Chrome za pomocą VBA?
Gdy będziesz mógł uzyskać dostęp do Google Chrome za pomocą VBA, następnym krokiem byłoby włączenie dostępu do witryny internetowej za pomocą VBA. Ułatwia to funkcja get, w której adres URL musi być przekazywany jako podwójne cudzysłowy w atrybucie.
Postępuj zgodnie z wyświetlanymi krokami
Moduł wyglądałby następująco: -
Naciśnij klawisz F5, aby wykonać makro.
Następująca strona internetowa zostanie otwarta w Google Chrome, tak jak została wyświetlona
Sub test2 ()Dim driver jako nowy webdriverDim rowc, cc, columnC jako liczba całkowitaDriver.start „Chrome”Driver.get „http://demo.guru99.com/test/web-table-element.php”Aplikacja.Wait Now + Timevalue („00:00:20”)Napis końcowy
Teraz makro programu Excel jest gotowe do wykonywania zadań skrobania. Następnym krokiem będzie pokazanie, w jaki sposób można wydobyć informacje przez zastosowanie selenu i VBA.
Jak pobrać informacje ze strony internetowej za pomocą VBA?
Załóżmy, że day trader chce codziennie uzyskiwać dostęp do danych ze strony internetowej. Za każdym razem, gdy day trader naciśnie przycisk, powinien automatycznie pobrać dane rynkowe do programu Excel.
Z powyższej strony należałoby dokonać inspekcji elementu i zaobserwować, jak skonstruowane są dane. Uzyskaj dostęp do poniższego kodu źródłowego HTML, naciskając Ctrl + Shift + I
Firma
Group
Pre Close (Rs)
Aktualna cena (Rs)
% zmiany
Kod źródłowy wyglądałby następująco: -
Jak widać, dane są zorganizowane jako pojedyncza tabela HTML. Dlatego, aby wyciągnąć całe dane z tabeli HTML, wymagałoby zaprojektowania makra, które pobiera informacje z nagłówka tabeli HTML i odpowiadające im dane skojarzone z tabelą. Wykonaj następujące zadania, jak pokazano na ekranie: -
Krok 1) Sformułuj pętlę for, która przechodzi przez informacje nagłówka HTML jako zbiór. Sterownik selenu musi znaleźć informacje nagłówka tabeli HTML. Aby to zrobić, używamy metody FindElementByClass () i FindElementByTag (), aby wykonać zadanie, jak pokazano
Moduł VBA wyglądałby następująco: -
Sub test2 ()Dim driver jako nowy WebDriverDim rowc, cc, columnC As Integerrowc = 2Application.ScreenUpdating = Fałszdriver.Start „chrome”driver.Get „http://demo.guru99.com/test/web-table-element.php”Dla każdego sterownika .FindElementByClass ("dataTable"). FindElementByTag ("thead"). FindElementsByTag ("tr")cc = 1Dla każdego t w th.FindElementsByTag ("th")Sheet2.Cells (1, cc) .Value = t.Textcc = cc + 1Następne tNastępny
Krok 2) Następnie sterownik selenu zlokalizowałby dane w tabeli stosując podobne podejście, jak wspomniano powyżej. Musisz napisać następujący kod: -
Sub test2 ()Dim driver jako nowy WebDriverDim rowc, cc, columnC As Integerrowc = 2Application.ScreenUpdating = Fałszdriver.Start „chrome”driver.Get „http://demo.guru99.com/test/web-table-element.php”Dla każdego sterownika .FindElementByClass ("dataTable"). FindElementByTag ("thead"). FindElementsByTag ("tr")cc = 1Dla każdego t w th.FindElementsByTag ("th")Sheet2.Cells (1, cc) .Value = t.Textcc = cc + 1Następne tNastępnyDla każdego tr In driver.FindElementByClass ("dataTable"). FindElementByTag ("tbody"). FindElementsByTag ("tr")kolumna C = 1Dla każdego td In tr.FindElementsByTag ("td")Sheet2.Cells (rowc, columnC) .Value = td.Textkolumna C = kolumna C + 1Następny tdrowc = rowc + 1Następny trAplikacja.Wait Now + TimeValue („00:00:20”)Napis końcowy
Moduł VBA wyglądałby następująco: -
Program Excel można zainicjować za pomocą atrybutu Range arkusza programu Excel lub atrybutu komórek arkusza programu Excel. Aby zmniejszyć złożoność skryptu VBA, dane kolekcji są inicjowane w atrybucie komórek programu Excel arkusza 2 obecnym w skoroszycie. Ponadto atrybut tekstowy pomaga w uzyskaniu informacji tekstowych umieszczonych pod znacznikiem HTML.
Sub test2 ()Dim driver jako nowy WebDriverDim rowc, cc, columnC As Integerrowc = 2Application.ScreenUpdating = Fałszdriver.Start „chrome”driver.Get „http://demo.guru99.com/test/web-table-element.php”Dla każdego sterownika .FindElementByClass ("dataTable"). FindElementByTag ("thead"). FindElementsByTag ("tr")cc = 1Dla każdego t w th.FindElementsByTag ("th")Sheet2.Cells (1, cc) .Value = t.Textcc = cc + 1Następne tNastępnyDla każdego tr In driver.FindElementByClass ("dataTable"). FindElementByTag ("tbody"). FindElementsByTag ("tr")kolumna C = 1Dla każdego td In tr.FindElementsByTag ("td")Sheet2.Cells (rowc, columnC) .Value = td.Textkolumna C = kolumna C + 1Następny tdrowc = rowc + 1Następny trAplikacja.Wait Now + TimeValue („00:00:20”)Napis końcowy
Moduł VBA wyglądałby następująco: -
Krok 3) Gdy skrypt makra będzie gotowy, przekaż i przypisz podprogram do przycisku programu Excel i wyjdź z modułu VBA. Oznacz przycisk jako odświeżanie lub dowolną odpowiednią nazwę, która może zostać dla niego zainicjowana. W tym przykładzie przycisk jest inicjowany jako odświeżanie.
Krok 4) Naciśnij przycisk odświeżania, aby uzyskać wymienione poniżej dane wyjściowe
Krok 5) Porównaj wyniki w programie Excel z wynikami w Google Chrome
Podsumowanie:
Selenium można sklasyfikować jako narzędzie do automatyzacji, które ułatwia pobieranie informacji ze stron internetowych HTML w celu wykonywania skrobania sieci za pomocą Google Chrome.
Skrobanie w Internecie powinno być wykonywane ostrożnie.
Zwykle pobieranie informacji jest sprzeczne z warunkami witryny internetowej.
Gdy skrobanie odbywa się za pomocą selenu, oferuje obsługę wielu przeglądarek.
Innymi słowy, skrobak może wykonywać podobne zadania polegające na przeszukiwaniu przeglądarki Firefox, a także przeglądarki internetowej.