jak importovat Data z webu do aplikace Excel?
je dobře známo, že World Wide Web obsahuje obrovské užitečné údaje. Před provedením jakékoli analýzy však musíme data importovat do aplikace Microsoft Excel. K dokončení tohoto druhu úkolu můžete použít dvě metody.
získejte externí Data z webu ručně
Předpokládejme, že chcete z této webové stránky stáhnout příjmy o nejlepších filmových filmech, zde vám ukáže, jak to udělat snadno.
Otevřete aplikaci Microsoft Excel a klikněte na kartu Data, ve skupině získat externí Data klikněte na z webu. Po zobrazení nového webového dotazu zkopírujte webovou adresu (http://www.the-numbers.com/movie/records/All-Time-Worldwide-Box-Office) do pole adresa a klikněte na tlačítko Přejít. Excel začne stahovat webovou stránku, jak je znázorněno na obrázku 1.1. Stačí kliknout na Ne, pokud se zobrazí okno s upozorněním na chybu skriptu, které je podobné tomu na obrázku níže. Pole zmizí a nemá žádný vliv na váš proces importu.
Obrázek 1.1
v pravém horním rohu dialogového okna nový webový dotaz je šipka ve žlutém poli. Kliknutím na něj můžete určit, zda se mají podobné ikony zobrazovat před tabulkami nebo ne. Například v levém panelu obrázku 1.2 není vedle tabulky žádná ikona šipky. Po kliknutí na tlačítko se šipkou se zobrazí ikona (v pravém panelu).
obrázek 1.2
klikněte na ikonu šipky vedle tabulek, které chcete vybrat. Ikony a tabulky se změní a podobné těm, které jsou zobrazeny na levém panelu na obrázku 1.3. Po kliknutí na Import; zobrazí se dialogové okno Importovat Data. Vyplňte rozsah (od sloupce a do sloupce H v našem případě), kam chcete data vložit, a klikněte na OK.
obrázek 1.3
data budou importována do Excelu po kliknutí na tlačítko Ok. Pokud klepnete pravým tlačítkem myši na libovolnou buňku v tabulce a vyberete Obnovit, Excel vyjde a vytáhne nejnovější data z webové stránky.
obrázek 1.4
a můžete dokonce nastavit data dotazu, která mají být obnovena jakýmkoli způsobem, který chcete. Stačí kliknout pravým tlačítkem myši na libovolnou buňku v tabulce a vybrat Vlastnosti datového rozsahu. V dialogovém okně Vlastnosti externího rozsahu dat s výzvou můžete změnit nastavení řízení obnovení a změnit styl. Můžete například určit dotaz, který má být obnoven každých 60 minut nebo při otevření souboru.
Scrape data pomocí programování VBA
programování VBA lze použít k škrábání dat z webové stránky. Je to mnohem užitečnější, zatímco obtížné při porovnávání s prvním přístupem. Kromě toho musíte pochopit, co je HTML, než se naučíte, jak škrábat data pomocí programování VBA. Doporučuji vám naučit se základní znalosti HTML z této webové stránky, pokud nevíte nic nebo málo o HTML. A odtud se můžete naučit téměř vše, co souvisí s webovým škrabáním pomocí VBA. Tento článek vám ukáže pouze dva příklady.
Scrape data z jedné webové stránky
Předpokládejme, že chceme extrahovat název společnosti, e-mailovou adresu a jméno kontaktu z této webové stránky. Pokud otevřete tuto webovou stránku, zjistíte, že v dolní části je blok kontaktů. Obrázek 2.1 ukazuje kontaktní blok a odpovídající zdrojový kód. Informace v červených rámečcích je to, co chceme potřebovat. A ty se zeleným podtržením jsou přesně to, co musíme extrahovat.
Obrázek 2.1
následující kód vám pomůže extrahovat výše požadované informace a vložit je do prvního listu.
zdrojový kód |
Sub Retrieve_Click () ' Create InternetExplorerSet IE = CreateObject ("InternetExplorer.Aplikace") ' nevidíme okno prohlížeče.Visible = False 'Otevřete webovou stránku.Navigovat "http://www.austrade.gov.au/SupplierDetails.aspx?ORGID=ORG8160044431&folderid=1736 "' počkejte, zatímco IE je loadingDo zatímco IE.readyState <> 4 nebo ie.Busy = True Doevents Loop ' načíst název společnosti, e-mailovou adresu & kontaktní informaceset contactobj = tj.dokument.getElementsByClassName ("contact-details block dark") htext = contactobj(0).innerHTML MsgBox htext pokud InStr(htext, " < P>název společnosti: ") pak ThisWorkbook.Pracovní listy (1).Cells(1, 1) = Split(Split (htext, "<p>název společnosti: ")(1), "<br") (0) konec Pokud Pokud InStr (htext, " mailto:") pak ThisWorkbook.Pracovní listy (1).Cells (2, 1) = Split (Split (htext, " mailto:") (1), Chr(34) & ">")(0) konec Pokud Pokud InStr (htext, " <p> Name:") pak ThisWorkbook.Pracovní listy (1).Buňky (3, 1) = Split (Split (htext, " <P>název: ")(1), "<br") (0) konec, pokud je Topracovní kniha.Pracovní listy (1).Buňky (4, 1) = tj.Místo V Této Pracovní Knize.Uložit sadu IE = nic nastavit contactobj = nic End Sub
„TJ.dokument.getelementsbylassname („contact-details block dark“) “ vám umožní získat všechny prvky s názvem třídy – contact-details block dark. Tato webová stránka uvádí téměř všechny vlastnosti a metody, které lze použít na prvcích HTML. Můžete si vybrat vhodný pro svůj vlastní problém.
vlastnost innerHTML vám umožní nastavit nebo vrátit obsah prvku HTML. V našem případě vrátil obsah prvku s názvem třídy „contact-details block dark“ a nastavil jej na proměnnou htext. Obsah (obrázek 2.2) může být vyzván ‚Msgbox htext‘.
obrázek 2.2
můžete vidět, že text je dobře strukturovaný. To je důvod, proč můžeme použít SPLIT funkci extrahovat, co je třeba. Pokud například vezmeme “ < P>název společnosti:“jako oddělovač a vzorec“ Split (htext, „<p>název společnosti:“) (1) „může vrátit celý text za“ < p>název společnosti:“. Pro tento nově vrácený text můžeme vzít „<br „jako oddělovač a získat text před prvním“ < br “ a to je název společnosti. Stručně řečeno, funkce SPLIT je flexibilní nástroj, který můžete použít k extrahování téměř všeho. Mezi další užitečné funkce patří LEN, INSTR, LEFT, RIGHT, MID a REPLACE. Nebudu zde podrobně diskutovat.
po kliknutí na OK na obrázku 2.2, požadovaná data lze importovat z webu do listu aplikace Excel. Například buňka A1 obsahuje název společnosti, zatímco buňka A4 obsahuje adresu webové stránky společnosti.
obrázek 2.3
přidáním níže uvedeného kódu před uložením sešitu můžete do buňky A4 přidat hypertextový odkaz.
zdrojový kód |
'přidejte hyperlinkThisWorkbook.Pracovní listy (1).Odkaz.Přidejte ThisWorkbook.Pracovní listy (1).Buňky (4, 1), ThisWorkbook.Pracovní listy (1).Buňky(4, 1)
pokud kliknete na buňku A4, můžete znovu navštívit webovou stránku. To je užitečné zejména v případě, že musíte načíst data pro mnoho společností. Protože můžete kliknout na libovolný hypertextový odkaz a znovu navštívit odpovídající webovou stránku a přidat nebo aktualizovat jakékoli informace ručně během pozdější kontroly.
obrázek 2.4
interakce s webovými stránkami
výše uvedený příklad pouze ilustruje, jak načíst data z jedné statické webové stránky. Ale více než často jsme povinni extrahovat interagovali s webovými stránkami, abychom získali velké množství dat. Podívejte se na obrázek 3.1. Ukazuje vám, jak se dostat na webovou stránku výše uvedeného příkladu. Vidíte, že existuje mnoho průmyslových odvětví a pro každé odvětví existuje spousta společností. Například v zemědělském průmyslu existuje 651 společností. Co bychom měli dělat, pokud chceme získat kontaktní informace všech společností ze všech průmyslových odvětví?
obrázek 3.1
klíčovým bodem je, že jak přimět VBA k interakci s webovými stránkami, jako je to, co děláme ručně. Vezměme si jako příklad výhodu S.W. i. s. Obecně doufáme, že Excel může kliknout na agropodnikání (horní panel obrázku 3.1), a tak spustit IE, aby nás nasměroval na druhou webovou stránku. Na druhé webové stránce (spodní panel na obrázku 3.1) může Excel kliknout na výhodu S.W. I. S a poté nás IE nasměruje na stránku, jak je znázorněno na obrázku 2.1, abychom mohli získat kontaktní informace o výhodě S. W. I. S.
po zadání následujícího kódu do editoru jazyka a odeslání kódu uvidíte, že je váš IE otevřen. Zobrazí se první webová stránka následovaná druhou webovou stránkou. Zde se dozvíte, jak získat prvek rozevíracího seznamu, vybrat možnost a spustit událost po výběru možnosti. „m = tj.dokument.getElementsByTagName („volba“).Délka-1″ vám poskytne celkový počet možností. To lze použít pro další smyčku.
zdrojový kód |
Sub retrieve () 'Create InternetExplorerSet IE = CreateObject ("InternetExplorer.Aplikace") ' podívejme se na windowIE prohlížeče.Visible = True 'Otevřete webovou stránku.Navigovat "http://www.austrade.gov.au/international/buy # "' počkejte, zatímco IE je loadingDo zatímco IE.Zaneprázdněná Aplikace.Počkejte DateAdd ("s", 1, Nyní) smyčka aplikace.Počkejte (nyní + TimeValue("00:00:10")) 'Část 1-Vyberte rozevírací seznam a spusťte událost poté, co vyberete jednu optionSet selectobj = IE.dokument.getElementsByTagName ("select") m = tj.dokument.getElementsByTagName ("volba").Délka - 1 výběrobj (0).selectedIndex = 1 selectobj(0).FireEvent ("onchange") 'počkejte, dokud IE načítádo, zatímco IE.readyState <> 4 nebo ie.Busy = True Aplikace.Počkejte DateAdd ("s", 1, Nyní) smyčka aplikace.Počkejte (nyní + TimeValue("00:00:10")) konec Sub
tato část kódu vás může přesměrovat na webovou stránku zobrazenou na obrázku 2.1 po kliknutí Excel na křestní jméno. Názvy všech společností jsou zahrnuty v prvku s názvem třídy „Name“. Searchobj je kolekce a searchobj (i)může vrátit (i+1) th objekt. Například searchobj (1).Klepněte na tlačítko vám umožní navštívit webovou stránku pro RIDLEY CORPORATION (Melbourne).
zdrojový kód |
'Část 2-Vyberte společnost NameSet searchobj = tj.dokument.getElementsByClassName ("jméno") searchobj (0).Klikněte na ' počkejte, zatímco IE je načtendo zatímco IE.readyState <> 4 nebo ie.Busy = True Doevents Loop
nakonec je zde celý kód, který vám může ukázat proces otevírání IE, procházení webových stránek a extrahování dat. Extrahovaná data budou stejná jako na obrázku 2.4.
zdrojový kód |
Sub Retrieve () 'Create InternetExplorerSet IE = CreateObject ("InternetExplorer.Aplikace") ' podívejme se na windowIE prohlížeče.Visible = True 'Otevřete webovou stránku.Navigovat "http://www.austrade.gov.au/international/buy # "' počkejte, zatímco IE je loadingDo zatímco IE.Zaneprázdněná Aplikace.Počkejte DateAdd ("s", 1, Nyní) smyčka aplikace.Počkejte (nyní + TimeValue("00:00:10")) 'Část 1-Vyberte rozevírací seznam a spusťte událost poté, co vyberete jednu optionSet selectobj = IE.dokument.getElementsByTagName ("select") m = tj.dokument.getElementsByTagName ("volba").Délka - 1 výběrobj (0).selectedIndex = 1 selectobj(0).FireEvent ("onchange") 'počkejte, dokud IE načítádo, zatímco IE.readyState <> 4 nebo ie.Busy = True Aplikace.Počkejte DateAdd ("s", 1, Nyní) smyčka aplikace.Počkejte (nyní + TimeValue("00:00:10")) 'Část 2-Vyberte společnost NameSet searchobj = tj.dokument.getElementsByClassName ("jméno") searchobj (0).Klikněte na ' počkejte, zatímco IE je načtendo zatímco IE.readyState <> 4 nebo ie.Busy = True Doevents Loop ' Část 3-načíst název společnosti, e-mailovou adresu & kontaktní informaceset contactobj = tj.dokument.getElementsByClassName ("contact-details block dark") htext = contactobj(0).innerHTML pokud InStr(htext, " <P>název společnosti: ") pak ThisWorkbook.Pracovní listy (1).Cells(1, 1) = Split(Split (htext, "<p>název společnosti: ")(1), "<br") (0) konec Pokud Pokud InStr (htext, " mailto:") pak ThisWorkbook.Pracovní listy (1).Cells (2, 1) = Split (Split (htext, " mailto:") (1), Chr(34) & ">")(0) konec Pokud Pokud InStr (htext, " <p> Name:") pak ThisWorkbook.Pracovní listy (1).Buňky (3, 1) = Split (Split (htext, " <P>název: ")(1), "<br") (0) konec, pokud je Topracovní kniha.Pracovní listy (1).Buňky (4, 1) = tj.LocationURL ' přidat hyperlinkThisWorkbook.Pracovní listy (1).Odkaz.Přidejte ThisWorkbook.Pracovní listy (1).Buňky (4, 1), ThisWorkbook.Pracovní listy (1).Buňky (4, 1) konec Sub
ve skutečnosti, to, co musíme udělat, je získat kontaktní informace pro všechny společnosti ze všech průmyslových odvětví, proto musíme k dokončení tohoto úkolu použít prohlášení o smyčce. Následuje kompletní kód. A můžete také najít kód v načíst kontaktní informace pro všechny společnosti.xlsm které si můžete stáhnout na konci tohoto článku.
zdrojový kód |
Sub Retrieve () pro idex = 2 až 18 ' Create InternetExplorerSet IE = CreateObject ("InternetExplorer.Aplikace") ' podívejme se na windowIE prohlížeče.Visible = False 'Otevřete webovou stránku.Navigovat "http://www.austrade.gov.au/international/buy # "' počkejte, zatímco IE je loadingDo zatímco IE.Zaneprázdněná Aplikace.Počkejte DateAdd ("s", 1, Nyní) smyčka aplikace.Počkejte (nyní + TimeValue("00:00:10")) idexn = idex - 1 ' Část 1-Vyberte dropdownSet selectobj = IE.dokument.getElementsByTagName ("select") m = tj.dokument.getElementsByTagName ("volba").Délka - 1 výběrobj (0).selectedIndex = idexn selectobj(0).FireEvent ("onchange") 'počkejte, dokud IE načítádo, zatímco IE.readyState <> 4 nebo ie.Busy = True Aplikace.Počkejte DateAdd ("s", 1, Nyní) smyčka aplikace.Počkejte (nyní + TimeValue("00:00:10")) wurl = tj.LocationURL tot = tj.dokument.getelementsbylassname ("SearchTotal") (0).innerHTML pg = Int (tot / 25) + 1 Max = (tot Mod 25) - 1 'Část 2-Vyberte Class = "Name" a = 2 pro j = 1 na pg, pokud j = 1 pak tj.Navigovat (wurl) jinak, tj.Navigovat (wurl & "&pg= " & j) konec, pokud dělat, zatímco IE.Zaneprázdněná Aplikace.Počkejte DateAdd ("s", 1, Nyní) smyčka, pokud j <> pg pak pro i = 1 až 24 nastavte searchobj = IE.dokument.getElementsByClassName ("jméno") searchobj (i).Klikněte na ' počkejte, zatímco IE je načtendo zatímco IE.readyState <> 4 nebo ie.Busy = True Doevents Loop ' Část 3-načíst název společnosti, e-mailovou adresu & kontaktní informaceset contactobj = tj.dokument.getElementsByClassName ("contact-details block dark") htext = contactobj(0).inerhtml této pracovní knihy.Pracovní listy (idex).Buňky (a, 1) = J ThisWorkbook.Pracovní listy (idex).Buňky (a, 2) = A-1 Pokud InStr (htext, " < P>název společnosti:") pak ThisWorkbook.Pracovní listy (idex).Cells(a, 3) = Split(Split (htext, "<P>název společnosti: ")(1), "<br") (0) konec Pokud Pokud InStr (htext, " mailto:") pak ThisWorkbook.Pracovní listy (idex).Cells (a, 4) = Split (Split (htext, " mailto:") (1), Chr(34) & ">")(0) konec Pokud Pokud InStr (htext, " <p> Name:") pak ThisWorkbook.Pracovní listy (idex).Buňky (a, 5) = Split(Split (htext, "<P>název: ")(1), "<br") (0) konec, pokud je Topracovní kniha.Pracovní listy (idex).Buňky (a, 6) = tj.LocationURL tj.GoBack dělat, zatímco IE.Zaneprázdněná Aplikace.Počkejte DateAdd ("s", 1, Nyní) smyčka a = a + 1 Další i Else pro i = 0 na Max nastavit searchobj = IE.dokument.getElementsByClassName ("jméno") searchobj (i).Klikněte na ' počkejte, zatímco IE je načtendo zatímco IE.readyState <> 4 nebo ie.Busy = True Doevents Loop ' Část 3-načíst název společnosti, e-mailovou adresu & kontaktní informaceset contactobj = tj.dokument.getElementsByClassName ("contact-details block dark") htext = contactobj(0).inerhtml této pracovní knihy.Pracovní listy (idex).Buňky (a, 1) = J ThisWorkbook.Pracovní listy (idex).Buňky (a, 2) = A-1 Pokud InStr (htext, " < P>název společnosti:") pak ThisWorkbook.Pracovní listy (idex).Cells(a, 3) = Split(Split (htext, "<P>název společnosti: ")(1), "<br") (0) konec Pokud Pokud InStr (htext, " mailto:") pak ThisWorkbook.Pracovní listy (idex).Cells (a, 4) = Split (Split (htext, " mailto:") (1), Chr(34) & ">")(0) konec Pokud Pokud InStr (htext, " <p> Name:") pak ThisWorkbook.Pracovní listy (idex).Buňky (a, 5) = Split(Split (htext, "<P>název: ")(1), "<br") (0) konec, pokud je Topracovní kniha.Pracovní listy (idex).Buňky (a, 6) = tj.Místo V Této Pracovní Knize.Pracovní listy (idex).Odkaz.Přidejte ThisWorkbook.Pracovní listy (idex).Buňky (a, 6), ThisWorkbook.Pracovní listy (idex).Buňky (a, 6) tj.GoBack dělat, zatímco IE.Zaneprázdněná Aplikace.Počkejte DateAdd ("s", 1, Nyní) smyčka a = a + 1 další končím, pokud ThisWorkbook.Uložit další j Set IE = nic Set contactobj = nic Next idex End Sub
jediný bod, který musím vysvětlit, je znázorněn na obrázku 3.2. Jeden web může vypsat pouze tolik jako 25 společnosti. Pokud je celkový počet společností větší než 25, bude více než jedna stránka. Obrázek 3.2 ukazuje, že existuje pravidlo pro získání adresy stránek za první stránkou. Je výsledkem zřetězené adresy první stránky „&pg=“ a skutečného čísla stránky. A pro všechny stránky před poslední stránkou je celkové číslo objektu 25. „TJ.dokument.getelementsbylassname („SearchTotal“) (0).innerHTML “ může vrátit celkový počet společností v rámci odvětví. V našem případě to bude 651. „Int (tot / 25) + 1“ vám může získat celkový počet stránek. A „Max = (tot Mod 25) – 1“ může vrátit maximální počet společností na poslední stránce. Zastavím se zde a nechám vás, abyste zjistili, jak tuto myšlenku aplikovat na kód. Je to mnohem lepší přístup k uchopení kódu. Pokud máte dotazy, můžete zanechat komentář.
obrázek 3.2
zde ukazuje část finálního Excelu. Kontaktní informace pro všechny společnosti v rámci jednoho odvětví jsou sestaveny do jednoho listu.
obrázek 3.3
- jak extrahovat data z webu do aplikace Excel automaticky?
- Import dat (věta, odstavce, tabulky, Komentáře) z Wordu do Excelu
- 6 nejlepších programovacích knih Excel VBA (pro začátečníky & pokročilé uživatele)
- Naučte se programování Excel VBA & makra (bezplatný tutoriál – krok za krokem)
- Tipy pro kódování Excel VBA
- co můžete dělat s VBA
- Úvod do Maker VBA
stáhnout pracovní soubor
Stáhněte si pracovní soubor z níže uvedeného odkazu.
Pull-Data-from-Web-To-Excel.rar