hogyan importálhat adatokat egy webhelyről az Excel-be?
köztudott, hogy a World Wide Web hatalmas hasznos adatokat tartalmaz. Bármilyen elemzés elvégzése előtt azonban importálnunk kell az adatokat a Microsoft Excelbe. Két módszer van, amellyel elvégezheti ezt a fajta feladatot.
külső adatok lekérése a webről manuálisan
tegyük fel, hogy a bevételeket a legjobb moneymaking filmekről szeretné letölteni erről a weboldalról, itt megmutatja, hogyan kell ezt könnyen megtenni.
nyissa meg a Microsoft Excel programot, majd kattintson az adatok fülre, a külső adatok beolvasása csoportban kattintson a webről lehetőségre. Miután megjelenik az új webes lekérdezés párbeszédpanel, másolja a webcímet (http://www.the-numbers.com/movie/records/All-Time-Worldwide-Box-Office) a cím mezőbe, majd kattintson a Go gombra. Az Excel elkezdi letölteni a weboldalt az 1.1. ábrán látható módon. Csak kattintson a Nem gombra, ha kap egy Szkripthiba figyelmeztető mezőt, amely hasonló az alábbi ábrán láthatóhoz. A doboz eltűnik, és nincs hatással az importálási folyamatra.
1. ábra.1
az új webes lekérdezés párbeszédpanel jobb felső sarkában található sárga mezőben egy nyíl található. Ha rákattint, meghatározhatja, hogy hasonló ikonokat jelenítsen-e meg a táblázatok előtt vagy sem. Például az 1.2.ábra bal oldali paneljén nincs nyíl ikon a táblázat mellett. A nyílgombra kattintva megjelenik egy ikon (a jobb oldali panelen) az ikonok megjelenítéséhez.
1.2. ábra
kattintson a kijelölni kívánt táblák melletti nyíl ikonra. Az ikonok és táblázatok megváltoznak, és hasonlóak lesznek az 1.3. ábra bal oldali paneljén láthatóhoz. Miután rákattintott az Importálás elemre; a rendszer kéri az Adatok importálása párbeszédpanelt. Töltse ki azt a tartományt (esetünkben az a oszloptól a H oszlopig), ahová az adatokat el szeretné helyezni, majd kattintson az OK gombra.
1.3. ábra
az adatok az Ok gombra kattintás után kerülnek importálásra az Excelbe. Ha jobb egérgombbal kattint a táblázat bármely cellájára, és kiválasztja a Frissítés lehetőséget, az Excel kialszik, és kihúzza a legfrissebb adatokat egy weboldalról.
ábra 1.4
azt is beállíthatja, hogy a lekérdezési adatok frissítésre kerüljenek bármilyen módon. Csak kattintson a jobb gombbal a táblázat bármely cellájára, válassza az Adattartomány tulajdonságait. A külső Adattartomány tulajdonságai párbeszédpanelen módosíthatja a frissítési vezérlő beállításait a stílus megváltoztatásához. Megadhatja például a lekérdezést, amelyet 60 percenként vagy a fájl megnyitásakor frissíteni kell.
kaparja az adatokat VBA programozással
a VBA programozás felhasználható adatok lekaparására egy weboldalról. Sokkal hasznosabb, bár nehéz, ha összehasonlítjuk az első megközelítéssel. Sőt, meg kell értenie, mi a HTML, mielőtt megtanulná, hogyan kell lekaparni az adatokat a VBA programozás segítségével. Azt javaslom, hogy tanulja meg a HTML alapvető ismereteit ezen a weboldalon, ha semmit vagy keveset tud a HTML-ről. Innen pedig szinte mindent megtanulhat a webkaparással kapcsolatban a VBA segítségével. Ez a cikk csak két példát mutat be.
adatok lekaparása egy weboldalról
tegyük fel, hogy ki akarjuk vonni a cég nevét, e-mail címét és kapcsolattartó nevét erről a weboldalról. Ha megnyitja ezt a weboldalt, azt találja, hogy alul van egy kapcsolattartó blokk. A 2.1.ábra a kontaktblokkot és a hozzá tartozó forráskódot mutatja. A piros dobozokban lévő információ az, amire szükségünk van. A zöld aláhúzással rendelkezőket pedig pontosan ki kell vonnunk.
2. ábra.1
a következő kód segíthet a fent kért információk kibontásában és az első munkalapba helyezésében.
forráskód |
Sub Retrieve_Click () ' InternetExplorerSet létrehozása IE = CreateObject("InternetExplorer.Alkalmazás") ' ne lássuk a böngészőablakotie.Látható = hamis ' nyissa meg a weboldalt.Navigáljon "http://www.austrade.gov.au/SupplierDetails.aspx?ORGID=ORG8160044431&folderid=1736 "' várjon, amíg az IE betöltődikcsináld, amíg az IE.readyState <> 4 vagy IE.Busy = True DoEvents Loop ' cégnév, e-mail cím & kapcsolattartási információkset contactobj = IE.dokumentum.getElementsByClassName ("kapcsolat-részletek blokk sötét") htext = contactobj(0).innerHTML MsgBox htext ha InStr (htext, " <p> Cégnév:"), akkor ThisWorkbook.Munkalapok(1).Cellák(1, 1) = Split (Split (htext, " < p> Cégnév: ")(1), "<br") (0) vége ha ha InStr (htext, "mailto:"), akkor ThisWorkbook.Munkalapok(1).Cellák(2, 1) = Split(Split(htext, "mailto:")(1), Chr(34) & ">")(0) vége ha ha InStr(htext, "<p>név:"), akkor ThisWorkbook.Munkalapok(1).Cellák (3, 1) = Split (Split (htext, " < p> Név: ")(1), "<br") (0) vége, ha Ezmunkakönyv.Munkalapok(1).Sejtek (4, 1) = IE.LocationURL ThisWorkbook.Save Set IE = semmi Set contactobj = semmi vége Sub
“IE.dokumentum.getElementsByClassName (“kapcsolat-részletek blokk sötét”) ” lehetővé teszi, hogy az összes elemet az osztály neve – kapcsolat-részletek blokk sötét. Ez a weboldal szinte az összes olyan tulajdonságot és módszert felsorolja, amelyek a HTML elemeken használhatók. Kiválaszthatja a saját problémájához megfelelőt.
az innerHTML tulajdonság lehetővé teszi egy HTML elem tartalmának beállítását vagy visszaadását. Esetünkben az elem tartalmát a “contact-details block dark” osztálynévvel adta vissza, és egy htext változóra állította. A tartalmat (2.2. ábra) az ‘Msgbox htext’adhatja meg.
ábra 2.2
láthatja, hogy a szöveg jól felépített. Ezért tudjuk használni SPLIT funkció kivonat mit kell. Például, ha a “<p>cégnevet vesszük:”elválasztóként és képletként” Split (htext, ” <p>Cégnév: “)(1)” A teljes szöveget a “<p> Cégnév:”után adhatja vissza. Ehhez az újonnan visszaadott szöveghez a” <br “- t választhatjuk határolóként, és a szöveget az első” <br ” előtt kapjuk meg, és ez a cég neve. Összefoglalva, SPLIT funkció egy rugalmas eszköz, amely segítségével kivonat szinte mindent. További hasznos funkciók közé tartozik a LEN, INSTR, bal, jobb, MID, and REPLACE. Itt nem fogok részletesen megvitatni.
miután rákattintott az OK gombra a 2.ábrán.2, a kért adatok importálhatók az internetről egy Excel munkalapra. Például az A1 cella tartalmazza a vállalat nevét, míg az A4 cella tartalmazza a vállalat weboldalának címét.
ábra 2.3
ha a munkafüzet mentése előtt hozzáadja az alábbi kódot, hiperhivatkozást adhat az A4 cellához.
forráskód |
'add hyperlinkThisWorkbook.Munkalapok(1).Hiperhivatkozások.Adja Hozzá Ezt A Munkafüzetet.Munkalapok(1).Cellák (4, 1), Ezmunkakönyv.Munkalapok(1).Sejtek(4, 1)
ha rákattint az A4 cellára, újra meglátogathatja a weboldalt. Ez különösen akkor hasznos, ha sok vállalat adatait kell lekérnie. Mivel bármelyik hiperhivatkozásra kattintva újra meglátogathatja a megfelelő weboldalt, és bármilyen információt manuálisan hozzáadhat vagy frissíthet a későbbi felülvizsgálat során.
ábra 2.4
interakció weboldalakkal
a fenti példa csak azt szemlélteti, hogyan lehet adatokat letölteni egy statikus weboldalról. De több, mint gyakran, mi van szükség, hogy kivonat kölcsönhatásba lépett a weboldalakat annak érdekében, hogy letölteni a nagy mennyiségű adat. Lásd a 3.1. ábrát. Megmutatja, hogyan juthat el a fenti példa weboldalára. Láthatjuk, hogy sok iparág van, és minden iparág számára sok vállalat van. Például 651 vállalat van az Agráriparban. Mit tegyünk, ha ki akarjuk vonni az összes iparág összes vállalatának elérhetőségét?
3. ábra.1
Nos, a lényeg az, hogy hogyan lehet A VBA kölcsönhatásba lépni a weboldalakkal, mint amit manuálisan csinálunk. Vegyük példaként a S. W. I. Előnyeiteket. Általában reméljük, hogy az Excel rákattinthat az Agrárvállalkozásra (a 3.1.ábra felső panelje), és így az IE-t a második weboldalra irányítja. A második weboldalon (a 3.1.ábra alsó paneljén) az Excel rákattinthat a S. W. I. S előnyére, majd az IE a 2.1. ábrán látható módon irányít minket az oldalra, hogy lekérhessük az S. W. I. S előny elérhetőségeit.
miután beírta a következő kódot a Visual Basic Editorba, és elküldte a kódot, látni fogja, hogy az IE megnyílik. Megjelenik az első weboldal, amelyet a második weboldal követ. Itt megtudhatja, hogyan szerezheti be a legördülő lista elemet, hogyan választhat ki egy opciót, és hogyan indíthat el egy eseményt az opció kiválasztása után. “m = IE.dokumentum.getElementsByTagName (“opció”).Hossz – 1 ” kapsz egy teljes számú lehetőséget. Ezt fel lehet használni a következő hurokhoz.
forráskód |
Sub retrieve () ' InternetExplorerSet létrehozása IE = CreateObject ("InternetExplorer.Alkalmazás") ' nézzük meg a böngészőablakotie.Visible = True ' nyissa meg a weboldalt.Navigáljon "http://www.austrade.gov.au/international/buy # "' várjon, amíg az IE betöltődikcsináld, amíg az IE.Foglalt Alkalmazás.Várjon DateAdd ("s", 1, Most) hurok alkalmazás.Várjon (most + időérték("00:00:10")) '1. rész-válassza ki a legördülő listát és az eseményindítást, miután kiválasztott egy lehetőségetkészlet selectobj = IE.dokumentum.getElementsByTagName ("select") m = azaz.dokumentum.getElementsByTagName ("opció").Hossz - 1 választobj(0).selectedIndex = 1 selectobj(0).FireEvent ("onchange") ' várjon, amíg az IE betöltődikcsináld, amíg az IE.readyState <> 4 vagy IE.Foglalt = Igaz Alkalmazás.Várjon DateAdd ("s", 1, Most) hurok alkalmazás.Várjon (most + időérték("00:00:10")) vége
a kód ezen része a 2.1. ábrán látható weboldalra irányíthatja, Miután az Excel rákattintott az utónévre. Minden vállalat neve szerepel az elemben a “név”osztálynévvel. A Searchobj egy gyűjtemény, és a searchobj (i)visszaadhatja az (i+1) objektumot. Például a searchobj(1).Kattintson lehetővé teszi, hogy látogassa meg a weboldalt RIDLEY CORPORATION (Melbourne).
forráskód |
'2. rész-válassza ki a cégneveket Searchobj = IE.dokumentum.getElementsByClassName ("név") searchobj (0).Kattintson a ' várjon, amíg az IE betöltődikcsináld, amíg az IE.readyState <> 4 vagy IE.Foglalt = igaz DoEvents hurok
Végül itt van az egész kód, amely megmutatja az IE megnyitásának folyamatát, a weboldalak böngészését és az adatok kinyerését. A kinyert adatok megegyeznek a 2.4.
forráskód |
Sub Retrieve () ' InternetExplorerSet létrehozása IE = CreateObject ("InternetExplorer.Alkalmazás") ' nézzük meg a böngészőablakotie.Visible = True ' nyissa meg a weboldalt.Navigáljon "http://www.austrade.gov.au/international/buy # "' várjon, amíg az IE betöltődikcsináld, amíg az IE.Foglalt Alkalmazás.Várjon DateAdd ("s", 1, Most) hurok alkalmazás.Várjon (most + időérték("00:00:10")) '1. rész-válassza ki a legördülő listát és az eseményindítást, miután kiválasztott egy lehetőségetkészlet selectobj = IE.dokumentum.getElementsByTagName ("select") m = azaz.dokumentum.getElementsByTagName ("opció").Hossz - 1 választobj(0).selectedIndex = 1 selectobj(0).FireEvent ("onchange") ' várjon, amíg az IE betöltődikcsináld, amíg az IE.readyState <> 4 vagy IE.Foglalt = Igaz Alkalmazás.Várjon DateAdd ("s", 1, Most) hurok alkalmazás.Várjon (most + időérték("00:00:10")) '2. rész-válassza ki a cégneveket Searchobj = IE.dokumentum.getElementsByClassName ("név") searchobj (0).Kattintson a ' várjon, amíg az IE betöltődikcsináld, amíg az IE.readyState <> 4 vagy IE.Busy = True DoEvents Loop ' 3. rész-a vállalat nevének, e-mail címének lekérése & kapcsolattartási információkészlet contactobj = IE.dokumentum.getElementsByClassName ("kapcsolat-részletek blokk sötét") htext = contactobj(0).innerHTML ha InStr (htext, "<p>Cégnév:"), akkor ThisWorkbook.Munkalapok(1).Cellák(1, 1) = Split (Split (htext, " < p> Cégnév: ")(1), "<br") (0) vége ha ha InStr (htext, "mailto:"), akkor ThisWorkbook.Munkalapok(1).Cellák(2, 1) = Split(Split(htext, "mailto:")(1), Chr(34) & ">")(0) vége ha ha InStr(htext, "<p>név:"), akkor ThisWorkbook.Munkalapok(1).Cellák (3, 1) = Split (Split (htext, " < p> Név: ")(1), "<br") (0) vége, ha Ezmunkakönyv.Munkalapok(1).Sejtek (4, 1) = IE.LocationURL ' hiperhivatkozás hozzáadása ehhez a munkafüzethez.Munkalapok(1).Hiperhivatkozások.Adja Hozzá Ezt A Munkafüzetet.Munkalapok(1).Cellák (4, 1), Ezmunkakönyv.Munkalapok(1).Cellák (4, 1) vége Sub
valójában azt kell tennünk, hogy kivonjuk az összes iparág összes vállalatának elérhetőségét, ezért ezt a feladatot a Use for loop utasításhoz kell használnunk. A következő a teljes kód. A kódot az összes vállalat kapcsolattartási adatainak lekérése részben is megtalálhatja.xlsm, amelyet a cikk végén tölthet le.
forráskód |
Sub Retrieve() az idex = 2-től 18-ig " InternetExplorerSet létrehozása IE = CreateObject ("InternetExplorer.Alkalmazás") ' nézzük meg a böngészőablakotie.Látható = hamis ' nyissa meg a weboldalt.Navigáljon "http://www.austrade.gov.au/international/buy # "' várjon, amíg az IE betöltődikcsináld, amíg az IE.Foglalt Alkalmazás.Várjon DateAdd ("s", 1, Most) hurok alkalmazás.Várjon (most + időérték("00:00:10")) idexn = idex-1 ' 1. rész-válassza a dropdownSet selectobj = IE lehetőséget.dokumentum.getElementsByTagName ("select") m = azaz.dokumentum.getElementsByTagName ("opció").Hossz - 1 választobj(0).selectedIndex = idexn selectobj (0).FireEvent ("onchange") ' várjon, amíg az IE betöltődikcsináld, amíg az IE.readyState <> 4 vagy IE.Foglalt = Igaz Alkalmazás.Várjon DateAdd ("s", 1, Most) hurok alkalmazás.Várjon (most + időérték("00:00:10")) wurl = IE.LocationURL tot = IE.dokumentum.getElementsByClassName ("SearchTotal")(0).innerHTML pg = Int (tot / 25) + 1 Max = (tot Mod 25) - 1 '2.rész - válassza ki az osztályt = "név"a = 2 J = 1-től pg-ig, ha j = 1, akkor azaz.Navigálás (wurl) más, azaz.Navigálás (wurl &" & pg= " & j) vége, ha közben IE.Foglalt Alkalmazás.Várjon DateAdd ("s", 1, Most) hurok, ha j <> pg, akkor az i = 1-től 24-ig állítsa be a searchobj = IE-t.dokumentum.getElementsByClassName ("név") searchobj (i).Kattintson a ' várjon, amíg az IE betöltődikcsináld, amíg az IE.readyState <> 4 vagy IE.Busy = True DoEvents Loop ' 3. rész-a vállalat nevének, e-mail címének lekérése & kapcsolattartási információkészlet contactobj = IE.dokumentum.getElementsByClassName ("kapcsolat-részletek blokk sötét") htext = contactobj(0).innerHTML ThisWorkbook.Munkalapok (idex).Cellák ( a, 1) = j ThisWorkbook.Munkalapok (idex).Cellák(a, 2) = a - 1 Ha InStr (htext, "<p>Cégnév:"), akkor ThisWorkbook.Munkalapok (idex).Cellák (a, 3) = Split (Split (htext, " < p> Cégnév: ")(1), "<br") (0) vége ha ha InStr (htext, "mailto:"), akkor ThisWorkbook.Munkalapok (idex).Cellák(a, 4) = Split(Split(htext, "mailto:")(1), Chr(34) & ">")(0) vége ha ha InStr(htext, "<p>név:"), akkor ThisWorkbook.Munkalapok (idex).Cellák (a, 5) = Split (Split (htext, " < p> Név: ")(1), "<br") (0) vége, ha Ezmunkakönyv.Munkalapok (idex).Sejtek (a, 6) = IE.LocationURL IE.GoBack csinálni, míg IE.Foglalt Alkalmazás.Várjon DateAdd ("s", 1, Most) hurok a = A + 1 Következő I mást i = 0 Max Set searchobj = azaz.dokumentum.getElementsByClassName ("név") searchobj (i).Kattintson a ' várjon, amíg az IE betöltődikcsináld, amíg az IE.readyState <> 4 vagy IE.Busy = True DoEvents Loop ' 3. rész-a vállalat nevének, e-mail címének lekérése & kapcsolattartási információkészlet contactobj = IE.dokumentum.getElementsByClassName ("kapcsolat-részletek blokk sötét") htext = contactobj(0).innerHTML ThisWorkbook.Munkalapok (idex).Cellák ( a, 1) = j ThisWorkbook.Munkalapok (idex).Cellák(a, 2) = a - 1 Ha InStr (htext, "<p>Cégnév:"), akkor ThisWorkbook.Munkalapok (idex).Cellák (a, 3) = Split (Split (htext, " < p> Cégnév: ")(1), "<br") (0) vége ha ha InStr (htext, "mailto:"), akkor ThisWorkbook.Munkalapok (idex).Cellák(a, 4) = Split(Split(htext, "mailto:")(1), Chr(34) & ">")(0) vége ha ha InStr(htext, "<p>név:"), akkor ThisWorkbook.Munkalapok (idex).Cellák (a, 5) = Split (Split (htext, " < p> Név: ")(1), "<br") (0) vége, ha Ezmunkakönyv.Munkalapok (idex).Sejtek (a, 6) = IE.LocationURL ThisWorkbook.Munkalapok (idex).Hiperhivatkozások.Adja Hozzá Ezt A Munkafüzetet.Munkalapok (idex).Cellák (a, 6), Ezmunkakönyv.Munkalapok (idex).Sejtek(a, 6), azaz.GoBack csinálni, míg IE.Foglalt Alkalmazás.Várjon DateAdd ("s", 1, Most) hurok a = A + 1 következő befejezem, ha ThisWorkbook.Mentés következő J Set IE = semmi Set contactobj = semmi következő idex End Sub
az egyetlen pont, amelyet meg kell magyaráznom, a 3.2.ábrán látható. Egy web felsorolni csak annyi, mint 25 cégek. Ha a vállalatok száma meghaladja a 25-et, akkor több oldal lesz. A 3.2. ábra azt mutatja, hogy van egy szabály, hogy az oldalak címét az első oldal után kapjuk meg. Ez az első oldal “&pg=” címének és a tényleges oldalszámnak az eredménye. Az utolsó oldal előtti összes oldal esetében a teljes objektumszám 25. “IE.dokumentum.getElementsByClassName (“SearchTotal”)(0).innerHTML ” visszaadhatja az iparágon belüli vállalatok teljes számát. A mi esetünkben 651 lesz. “Int (tot / 25) + 1” lehet kapni a teljes oldalak száma. A “Max = (tot Mod 25) – 1” pedig visszaadhatja az utolsó oldalon található vállalatok maximális számát. Itt megállok, és hagyom, hogy kitalálja, hogyan kell alkalmazni ezt az ötletet a kódra. Ez egy sokkal jobb megközelítés az Ön számára, hogy megértsék kódot. Akkor hagy egy megjegyzést, ha kérdése van.
ábra 3.2
itt megmutatja a végső excel egy részét. Az egy iparágon belüli összes vállalat elérhetőségét egy munkalapon állítják össze.
ábra 3.3
- hogyan lehet automatikusan kivonni az adatokat a webhelyről az Excel-be?
- Adatok importálása (mondat, bekezdések, táblázatok, Megjegyzések) Word – ből Excel-be
- 6 legjobb Excel VBA programozási könyv (kezdőknek & haladó felhasználók számára)
- Ismerje meg az Excel VBA programozását & makrók (Ingyenes bemutató-lépésről lépésre)
- Excel VBA kódolási tippek
- mit tehet a VBA
- Bevezetés A VBA Makrókba
munkafájl letöltése
töltse le a Munkafájlt az alábbi linkről.
húzza-adatok-a-Web-to-Excel.rar