Web Scraping s VBA
Co je to škrábání dat?
Data scraping je technika, která pomáhá při extrakci požadovaných informací z webové stránky HTML do místního souboru na vašem místním počítači. Normálně by místní soubor mohl odpovídat souboru aplikace Excel, souboru aplikace Word nebo řekněme libovolnému Microsoft kancelářská aplikace. Pomáhá při přenosu kritických informací z webové stránky.
Při každodenní práci na projektu založeném na výzkumu se získávání dat stává jednoduchým a takový projekt je čistě závislý na internetu a webových stránkách. Abychom toto téma dále ilustrovali, vezměme si příklad denního obchodníka, který spouští excelové makro pro stahování tržních informací z finančního webu do excelového listu pomocí VBA.
Jak připravit Excel Macro před provedením škrábání dat pomocí Internet Exploreru?
Existují určité předpoklady, které je třeba provést na souboru makra aplikace Excel, než se pustíte do procesu seškrabování dat v aplikaci Excel.
Tyto předpoklady jsou následující: –
Krok 1) Otevřete makro založené na Excelu a získejte přístup k vývojářské možnosti aplikace Excel.
Krok 2) Vyberte možnost Visual Basic na pásu karet Vývojář.
Krok 3) Vložte nový modul.
Krok 4) Inicializujte nový podprogram
Sub test() End sub
Modul bude mít následující výsledek: –
Krok 5) Přístup k možnosti reference na kartě nástroje a reference Microsoft Knihovna objektů HTML a Microsoft ovládání internetu.
Následující soubory je třeba odkazovat na modul, protože pomáhá při otevírání prohlížeče Internet Explorer a usnadňuje vývoj skriptování maker.
Nyní je soubor Excel připraven k interakci s internetovým prohlížečem. Dalším krokem by bylo začlenění skriptů maker, které by usnadnily seškrabování dat v HTML.
Jak otevřít Internet Explorer pomocí Excel VBA?
Krok 1) Inicializujte proměnnou v podprogramech, jak je zobrazeno níže
Sub test() Dim ie As New InternetExplorer Dim doc As New HTMLDocument
Krok 2) Chcete-li otevřít Internet Explorer pomocí VBA, napište tj. viditelný=pravda a stiskněte F5.
Sub test() Dim ie As New InternetExplorer Dim doc As New HTMLDocument Ie.visible=true
Modul by vypadal následovně: -
Jak otevřít web v Internet Exploreru pomocí VBA?
Zde jsou kroky k otevření webu v Internet Exploreru pomocí VBA
Krok 1) Jakmile budete moci přistupovat k Internet Exploreru pomocí Excel VBA, další krok by zahrnoval přístup k webové stránce pomocí VBA. To usnadňuje Navigate Attribute, kde adresa URL musí být v atributu předána jako dvojité uvozovky. Postupujte podle zobrazených kroků.
Sub test() Dim, ie As New InternetExplorer Dim doc As New HTMLDocument Dim ecoll As Object ie.Visible = True ie.navigate"https://demo.guru99.com/test/web-table-element.php" Do DoEvents Loop Until ie.readyState = READYSTATE_COMPLETE
Krok 2) – Stisknutím klávesy F5 spusťte makro. Otevře se následující webová stránka, jak je zobrazena
Nyní je makro Excel připraveno s ohledem na provádění funkcí stírání. V dalším kroku by se zobrazilo, jak lze informace extrahovat z Internet Exploreru pomocí VBA.
Jak seškrábat informace z webu pomocí VBA?
Předpokládejme, že obchodník chce denně přistupovat k datům z webu. Pokaždé, když obchodník během dne stiskne tlačítko, měl by automaticky stáhnout data o trhu do aplikace Excel.
Z výše uvedeného webu by bylo nutné prohlédnout prvek a sledovat, jak jsou data strukturována.
Krok 1) K níže uvedenému zdrojovému kódu HTML se dostanete stisknutím 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>
Zdrojový kód by byl následující: -
Sub test() Dim ie As New InternetExplorer Dim doc As New HTMLDocument Dim ecoll As Object ie.Visible = True ie.navigate "https://demo.guru99.com/test/web-table-element.php" Do DoEvents Loop Until ie.readyState = READYSTATE_COMPLETE Set doc = ie.document
Jak je vidět, data jsou strukturována jako jediná HTML tabulka. Proto, aby bylo možné vytáhnout celá data z html tabulky, vyžadovalo by to navržení makra, které shromažďuje data ve formě kolekce.
Kolekce by pak byla vložena do excelu. K dosažení požadovaných výsledků proveďte níže uvedené kroky: –
Krok 2) Inicializujte dokument Html v podprogramu
Modul VBA by vypadal takto: –
Krok 3) Inicializujte prvek kolekce přítomný v dokumentu HTML
Modul VBA by vypadal takto: –
Sub test() Dim ie As New InternetExplorer Dim doc As New HTMLDocument Dim ecoll As Object ie.Visible = True ie.navigate "https://demo.guru99.com/test/web-table-element.php" Do DoEvents Loop Until ie.readyState = READYSTATE_COMPLETE Set doc = ie.document Set ecoll = doc.getElementsByTagName("table")
Krok 4) Inicializujte buňky listu Excel pomocí vnořené smyčky, jak je znázorněno
Modul VBA by vypadal takto: –
Sub test() Dim ie As New InternetExplorer Dim doc As New HTMLDocument Dim ecoll As Object ie.Visible = True ie.navigate "https://demo.guru99.com/test/web-table-element.php" Do DoEvents Loop Until ie.readyState = READYSTATE_COMPLETE Set doc = ie.document Set ecoll = doc.getElementsByTagName("table")
Excel lze inicializovat pomocí atributu range excelového listu nebo atributu přes buňky excelového listu. Aby se snížila složitost skriptu VBA, jsou data kolekce inicializována podle atributu buněk aplikace Excel listu 1 obsaženého v sešitu.
Jakmile je makro skript připraven, předejte a přiřaďte podprogram k tlačítku excel a ukončete modul VBA. Označte tlačítko jako refresh nebo jakýkoli vhodný název, který by na něj mohl být inicializován. V tomto příkladu je tlačítko inicializováno jako obnovení.
Krok 5) Stisknutím tlačítka pro obnovení získáte níže uvedený výstup
Krok 6) Porovnejte výsledky v excelu s výsledky internet exploreru
Shrnutí
- Seškrabování dat umožňuje uživateli vyškrábat pouze informace, které uživatel chce. Chcete-li najít nejlepší nástroje pro tento účel, podívejte se na tento seznam nástrojů pro škrábání webu, které vám pomohou efektivně extrahovat požadované informace z různých webových stránek.
- Seškrabování lze provádět pomocí Internet Exploreru.
- Proces škrábání je v případě internetového prohlížeče pomalejší; uživateli však přináší požadované výsledky.
- Škrábání by mělo být prováděno s naprostou opatrností a opatrností, protože může poškodit a zničit systém používaný k škrábání.