VBA Web Scraping

Przeszukiwanie sieci Excel VBA

VBA Web Scraping to technika uzyskiwania dostępu do stron internetowych i pobierania danych z tej witryny do naszych plików komputerowych. Skrobanie sieci Web jest możliwe dzięki dostępowi do aplikacji zewnętrznych, takich jak Internet Explorer. Możemy to zrobić na dwa sposoby, tj. Early Binding i Late Binding.

Web Scraping z VBA oznacza, że ​​kiedy używamy VBA do pobierania danych z innych źródeł w sieci, może to wymagać logowania do źródeł danych, ale najpierw, aby to zrobić, musimy włączyć odwołania z sekcji narzędzi w edytor VBA dla biblioteki Microsoft HTML w celu uzyskania dostępu do sieci z VBA.

Niewielu z nas wie, że z programu Excel możemy uzyskać dostęp do stron internetowych i uzyskać dane z tych stron. Tak, dobrze słyszałeś. możemy przeglądać strony internetowe, uzyskiwać dostęp do aplikacji do przeglądania i wiele innych. W tym artykule pokażemy, jak szczegółowo napisać kod VBA Excel do skrobania stron internetowych.

Zwykle otwieramy strony internetowe, kopiujemy dane i wklejamy je do naszych plików, takich jak Excel, Word lub inne pliki. Ale w tym artykule pokażemy, jak uzyskać dostęp do witryn internetowych z programu Excel i robić wiele innych rzeczy.

Jak pozbyć się danych witryny za pomocą VBA?

Możesz pobrać ten szablon VBA Web Scraping Excel tutaj - VBA Web Scraping Excel Template

Jeśli chcemy uzyskać dostęp do innych aplikacji z programu Excel, możemy to zrobić na różne sposoby, np. „Wczesne wiązanie” i „Późne wiązanie”. Na początkowym etapie zawsze bezpiecznie jest skorzystać z techniki „Early Binding”.

Aby uzyskać dostęp do serwisu, potrzebujemy aplikacji do przeglądania, na przykład „ Internet Explorer ”. Ponieważ jest to obiekt zewnętrzny, musimy najpierw ustawić odniesienie.

Wykonaj poniższe kroki, aby notować z sieci.

Krok 1: Zdefiniuj zmienną VBA i przypisz typ danych jako „ Internet Explorer ”.

Kod:

 Sub Web_Scraping () Dim Internet_Explorer As internet End Sub 

Jak widać powyżej, kiedy próbujemy ustawić odniesienie do przeglądarki Internet Explorer, nie widzimy „Internet Explorera”, ponieważ „Internet Explorer” jest obiektem zewnętrznym, więc musimy ustawić odniesienie.

Krok 2: Aby ustawić odniesienie, przejdź do „ Narzędzia ” i wybierz „ Referencje ”.

W poniższym oknie przewiń w dół i wybierz „ Microsoft Internet Controls ”.

Krok 3: Zaznacz pole „Microsoft Internet Controls” i kliknij OK. Teraz powinniśmy zobaczyć tę nazwę obiektu na liście IntelliSense.

Kod:

 Sub Web_Scraping () Dim Internet_Explorer As inter End Sub 

Krok 4: Wybierz „InternetExplorer”.

Kod:

 Sub Web_Scraping () Dim Internet_Explorer As InternetExplorer End Sub 

Krok 5: Następnie musimy ustawić odniesienie, aby włączyć Internet Explorer. Ponieważ jest to zmienna obiektowa, musimy użyć słowa kluczowego „ Set ”, aby ustawić odniesienia.

Kod:

 Sub Web_Scraping () Dim Internet_Explorer As InternetExplorer Ustaw Internet_Explorer = New InternetExplorer End Sub 

Krok 6: Teraz używając zmiennej „ Internet_Explorer ” możemy użyć właściwości i metod przeglądarki internetowej.

Wprowadź nazwę zmiennej i umieść kropkę, aby wyświetlić listę IntelliSense.

Kod:

Sub Web_Scraping () Dim Internet_Explorer As InternetExplorer Ustaw Internet_Explorer = New InternetExplorer Internet_Explorer. Napis końcowy

Krok 7: Teraz, aby wyświetlić aplikację Internet Explorer, musimy wybrać właściwość „ Visible ” i ustawić status na „ True ”.

Kod:

 Sub Web_Scraping () Dim Internet_Explorer As InternetExplorer Ustaw Internet_Explorer = New InternetExplorer Internet_Explorer.Visible = True End Sub 

Teraz uruchom kod i powinieneś zobaczyć, jak Internet Explorer otwiera się na twoim komputerze.

Krok 8: Ponieważ nie podano adresu internetowego, widzimy tylko pustą stronę. Aby podać adres WWW do przeglądarki internetowej, potrzebujemy metody „ Nawigacja ”.

Kod:

 Sub Web_Scraping () Dim Internet_Explorer As InternetExplorer Ustaw Internet_Explorer = New InternetExplorer Internet_Explorer.Visible = True Internet_Explorer.Navigate (End Sub 

Krok 9: Jak widać powyżej metoda „Nawigacji” z pytaniem, po którym adresie URL ma być nawigacja w programie Internet Explorer. Teraz muszę otworzyć stronę „ Wallstreetnmojo ” i mogę podać adres URL w następujący sposób. „//Www.wallstreetmojo.com/”

Kod:

 Sub Web_Scraping () Dim Internet_Explorer As InternetExplorer Ustaw Internet_Explorer = New InternetExplorer Internet_Explorer.Visible = True Internet_Explorer.Navigate ("//www.wallstreetmojo.com") End Sub 

Teraz uruchom kod, powinniśmy zobaczyć wspomnianą stronę z adresem internetowym w przeglądarce Internet Explorer.

Tutaj mamy problem z tym, że po otwarciu strony internetowej nasz kod musi czekać, aż strona zostanie w pełni otwarta.

Krok 10: Musimy użyć pętli „Do While” w VBA, aby faktycznie poczekać, aż nasz kod przejdzie dalej, aż wspomniana strona zostanie w pełni załadowana.

Tak więc dodaj poniżej pętlę „Do While”, aby wymusić na makrze odczekanie, aż wspomniana strona internetowa przejdzie do trybu „ Gotowość zakończona ”.

Kod:

 Sub Web_Scraping () Dim Internet_Explorer As InternetExplorer Ustaw Internet_Explorer = New InternetExplorer Internet_Explorer.Visible = True Internet_Explorer.Navigate ("//www.wallstreetmojo.com") Do While Internet_Explorer.ReadyState READYSTATE_COMPLET: 

Krok 11: Teraz spróbujmy uzyskać informacje o witrynie w jednej linii. Aby uzyskać informacje o wspomnianych adresach internetowych, musimy użyć właściwości „ Nazwa lokalizacji ”.

Kod:

 Sub Web_Scraping () Dim Internet_Explorer As InternetExplorer Ustaw Internet_Explorer = New InternetExplorer Internet_Explorer.Visible = True Internet_Explorer.Navigate ("//www.wallstreetmojo.com") Do While Internet_Explorer.ReadyState READYSTATE_COMPLExplocation: Internet_COMPLExplocation: 

Run the code and in the message box, we would get the information about the website.

Step 12: Now at the bottom, we can also print website addresses as well.

Code:

 Sub Web_Scraping() Dim Internet_Explorer As InternetExplorer Set Internet_Explorer = New InternetExplorer Internet_Explorer.Visible = True Internet_Explorer.Navigate ("//www.wallstreetmojo.com") Do While Internet_Explorer.ReadyState  READYSTATE_COMPLETE: Loop MsgBox Internet_Explorer.LocationName & vbNewLine & vbNewLine & Internet_Explorer.LocationURL End Sub 

Now this will tell about the website description and also shows the website address as well.

Things to Remember here

  • Web scraping is possible by accessing external applications like Internet Explorer.
  • We can do it in two ways i.e. Early Binding & Late Binding. With Early Binding, we can get to see the IntelliSense list but with late binding, we cannot get to see the IntelliSense list at all.