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.

Před provedením škrábání dat pomocí aplikace Internet Explorer připravte makro Excel

Krok 2) Vyberte možnost Visual Basic na pásu karet Vývojář.

Před provedením škrábání dat pomocí aplikace Internet Explorer připravte makro Excel

Krok 3) Vložte nový modul.

Před provedením škrábání dat pomocí aplikace Internet Explorer připravte makro Excel

Krok 4) Inicializujte nový podprogram

Sub test()
End sub

Modul bude mít následující výsledek: –

Před provedením škrábání dat pomocí aplikace Internet Explorer připravte makro Excel

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.

Před provedením škrábání dat pomocí aplikace Internet Explorer připravte makro Excel

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ě: -

Otevřete Internet Explorer pomocí Excel VBA

Otevřete Internet Explorer pomocí Excel VBA

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

Otevřete webovou stránku v prohlížeči Internet Explorer pomocí jazyka VBA

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

Seškrabujte informace z webu pomocí VBA

Krok 5) Stisknutím tlačítka pro obnovení získáte níže uvedený výstup

Seškrabujte informace z webu pomocí VBA

Krok 6) Porovnejte výsledky v excelu s výsledky internet exploreru

Seškrabujte informace z webu pomocí VBA

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