Selenium Samouczek VBA Excel: Przykład skrobania w przeglądarce Chrome
Czym jest Data Scraping przy użyciu selenu?
Selenium można sklasyfikować jako narzędzie automatyzacji, które ułatwia pozyskiwanie informacji ze stron internetowych HTML w celu przeprowadzenia web scrapingu przy użyciu przeglądarki Google Chrome.
Jak przygotować makro Excela przed wykonaniem skrobania danych za pomocą Selenium?
Istnieją pewne warunki wstępne, które należy spełnić w pliku makra programu Excel przed przystąpieniem do procesu skrobania danych w programie Excel.
Te przesłanki są następujące: –
Krok 1) Otwórz makro oparte na programie Excel i uzyskaj dostęp do opcji programistycznych programu Excel.
Krok 2) Wybierz opcję Visual Basic na wstążce Deweloper.
Krok 3) Włóż nowy moduł.
Krok 4) Zainicjuj nowy podprogram i nadaj mu nazwę test2.
Sub test2() End sub
Oto wyniki modułu: –
Krok 5) Uzyskaj dostęp do opcji odniesienia pod zakładką narzędzia i odnośnikiem Selenium biblioteka typu. Następujące biblioteki należy odwoływać się do modułu, ponieważ pomagają one w otwieraniu Google Chrome i ułatwiają rozwój skryptów makr.
Teraz plik Excel jest gotowy do interakcji z przeglądarką Internet Explorer. Następnym krokiem byłoby włączenie skryptu makra, który ułatwiłby skrobanie danych w formacie HTML.
Jak otworzyć Google Chrome używając VBA?
Oto krok do otwarcia Google Chrome za pomocą VBA
Krok 1) Zadeklaruj i zainicjuj zmienne w podprogramie, jak pokazano poniżej
Sub test2() Dim driver as new webdriver Dim rowc, cc, columnC as integer
Krok 2) Aby otworzyć przeglądarkę Google Chrome za pomocą selenu i języka VBA, wpisz driver.start „chrome” i naciśnij F5.
Poniżej znajduje się kod.
Sub test2() Dim driver as new webdriver Dim rowc, cc, columnC as integer Driver.start "Chrome" Application.Wait Now+Timevalue("00:00:20") End sub
Wynik modułu będzie następujący: –
Jak otworzyć stronę internetową w przeglądarce Google Chrome za pomocą VBA?
Gdy będziesz w stanie uzyskać dostęp do Google Chrome za pomocą VBA, następnym krokiem będzie włączenie dostępu do witryny za pomocą VBA. Ułatwia to funkcja get, w której adres URL musi zostać przekazany jako podwójne cudzysłowy w atrybucie.
Wykonaj następujące kroki, zgodnie z wyświetleniem
Moduł wyglądałby następująco: –
Naciśnij klawisz F5, aby wykonać makro.
Następująca strona internetowa zostanie otwarta w przeglądarce Google Chrome, jak pokazano
Sub test2() Dim driver as new webdriver Dim rowc, cc, columnC as integer Driver.start "Chrome" Driver.get "https://demo.guru99.com/test/web-table-element.php" Application.Wait Now+Timevalue("00:00:20") End sub
Teraz makro Excela jest gotowe do wykonania zadań scrapowania. Następny krok pokaże, jak można wyodrębnić informacje, stosując selen i VBA.
Jak zeskrobać 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 daytrader naciśnie przycisk „kliknij”, powinien automatycznie pobrać dane rynkowe do programu Excel.
Z powyższej strony internetowej konieczne byłoby sprawdzenie elementu i zaobserwowanie struktury danych. Uzyskaj dostęp do poniższego kodu źródłowego HTML, naciskając Ctrl + Shift + I
<table class="datatable"> <thead> <tr> <th>Company</th> <th>Group</th> <th>Pre Close (Rs)</th> <th>Current Price (Rs)</th> <th>% Change</th> </tr>
Kod źródłowy wyglądałby następująco: –
Jak widać, dane są ustrukturyzowane jako pojedyncza tabela HTML. Dlatego, aby wyciągnąć całe dane z tabeli HTML, konieczne byłoby zaprojektowanie makra, które wyciąga informacje nagłówka tabeli HTML i odpowiadające dane powiązane z tabelą. Wykonaj następujące zadania, jak pokazano: –
Krok 1) Sformułuj pętlę for, która przechodzi przez informacje nagłówka HTML jako kolekcję. Sterownik selenu musi znaleźć informacje nagłówka tabeli HTML. Aby to zrobić, wykorzystujemy metodę FindElementByClass() i FindElementByTag(), aby wykonać zadanie, jak pokazano
Moduł VBA wyglądałby następująco: –
Sub test2() Dim driver As New WebDriver Dim rowc, cc, columnC As Integer rowc = 2 Application.ScreenUpdating = False driver.Start "chrome" driver.Get "https://demo.guru99.com/test/web-table-element.php" For Each th In driver.FindElementByClass("dataTable").FindElementByTag("thead").FindElementsByTag("tr") cc = 1 For Each t In th.FindElementsByTag("th") Sheet2.Cells(1, cc).Value = t.Text cc = cc + 1 Next t Next th
Krok 2) Następnie sterownik selenu zlokalizuje dane tabeli, korzystając z podobnego podejścia, jak wspomniano powyżej. Musisz napisać następujący kod: –
Sub test2() Dim driver As New WebDriver Dim rowc, cc, columnC As Integer rowc = 2 Application.ScreenUpdating = False driver.Start "chrome" driver.Get"https://demo.guru99.com/test/web-table-element.php" For Each th In driver.FindElementByClass("dataTable").FindElementByTag("thead").FindElementsByTag("tr") cc = 1 For Each t In th.FindElementsByTag("th") Sheet2.Cells(1, cc).Value = t.Text cc = cc + 1 Next t Next th For Each tr In driver.FindElementByClass("dataTable").FindElementByTag("tbody").FindElementsByTag("tr") columnC = 1 For Each td In tr.FindElementsByTag("td") Sheet2.Cells(rowc, columnC).Value = td.Text columnC = columnC + 1 Next td rowc = rowc + 1 Next tr Application.Wait Now + TimeValue("00:00:20") End Sub
Moduł vba wyglądałby następująco: –
Excel może zostać zainicjowany za pomocą atrybutu Range arkusza Excel lub za pomocą atrybutu cells arkusza Excel. Aby zmniejszyć złożoność skryptu VBA, dane kolekcji są inicjowane do atrybutu excel cells arkusza 2 obecnego w skoroszycie. Ponadto atrybut text pomaga w uzyskaniu informacji tekstowej umieszczonej pod znacznikiem HTML.
Sub test2() Dim driver As New WebDriver Dim rowc, cc, columnC As Integer rowc = 2 Application.ScreenUpdating = False driver.Start "chrome" driver.Get"https://demo.guru99.com/test/web-table-element.php" For Each th In driver.FindElementByClass("dataTable").FindElementByTag("thead").FindElementsByTag("tr") cc = 1 For Each t In th.FindElementsByTag("th") Sheet2.Cells(1, cc).Value = t.Text cc = cc + 1 Next t Next th For Each tr In driver.FindElementByClass("dataTable").FindElementByTag("tbody").FindElementsByTag("tr") columnC = 1 For Each td In tr.FindElementsByTag("td") Sheet2.Cells(rowc, columnC).Value = td.Text columnC = columnC + 1 Next td rowc = rowc + 1 Next tr Application.Wait Now + TimeValue("00:00:20") End Sub
Moduł vba wyglądałby następująco: –
Krok 3) Gdy skrypt makra będzie gotowy, przekaż i przypisz podprogram do przycisku Excela i wyjdź z modułu VBA. Oznacz przycisk jako odświeżający lub dowolną odpowiednią nazwę, którą można mu nadać. W tym przykładzie przycisk jest inicjowany jako odświeżanie.
Krok 4) Naciśnij przycisk odświeżania, aby uzyskać poniższe dane wyjściowe
Krok 5) Porównaj wyniki w programie Excel z wynikami przeglądarki Google Chrome
Podsumowanie
- Selenium można sklasyfikować jako narzędzie automatyzacji, które ułatwia pozyskiwanie informacji ze stron internetowych HTML w celu przeprowadzenia web scrapingu przy użyciu przeglądarki Google Chrome.
- Skrobanie w Internecie powinno być wykonywane ostrożnie.
- Wymazywanie informacji jest zwykle sprzeczne z warunkami witryny internetowej.
- Jeśli scrapowanie odbywa się za pomocą selenu, dostępna jest obsługa wielu przeglądarek.
- Innymi słowy, skrobak może wykonywać podobne zadania, jak skrobanie Firefox, Internet Explorer również.