cum să importați date de pe un site web în Excel?
este bine cunoscut faptul că World Wide Web conține date utile uriașe. Cu toate acestea, trebuie să importăm datele în Microsoft Excel înainte de a face orice fel de analiză. Există două metode pe care le puteți utiliza pentru a finaliza acest tip de sarcină.
Ia date externe de la Web manual
să presupunem că doriți să descărcați venituri despre filme de top moneymaking din această pagină web, aici vă arată cum se face cu ușurință.
Deschideți Microsoft Excel și faceți clic pe fila Date, în grupul obțineți date externe, faceți clic pe web. După ce apare caseta de dialog New Web Query, copiați adresa web (http://www.the-numbers.com/movie/records/All-Time-Worldwide-Box-Office) în câmpul Address și faceți clic pe butonul Go. Excel va începe să descarce pagina web așa cum se arată în figura 1.1. Doar faceți clic pe Nu dacă veți primi o casetă de avertizare a erorilor de Script, care este similară cu cea din figura de mai jos. Caseta va dispărea și nu are niciun impact asupra procesului de import.
Figura 1.1
există o săgeată în caseta galbenă din colțul din dreapta sus al casetei de dialog New Web Query. Făcând clic pe ea, puteți determina dacă să afișați pictograme similare înainte de tabele sau nu. De exemplu, nu există nicio pictogramă săgeată lângă tabelul din panoul din stânga din figura 1.2. Și va exista o pictogramă (în panoul din dreapta) după ce faceți clic pe butonul săgeată pentru a afișa pictograme.
figura 1.2
Faceți clic pe pictograma săgeată de lângă tabelele pe care doriți să le selectați. Pictogramele și tabelele se vor schimba și vor fi similare cu cele prezentate în panoul din stânga din Figura 1.3. După ce faceți clic pe Import; se va solicita o casetă de dialog Import date. Completați intervalul (de la coloana a până la coloana H în cazul nostru) unde doriți să puneți datele și faceți clic pe OK.
figura 1.3
datele vor fi importate în Excel după ce faceți clic pe Ok. Dacă faceți clic dreapta pe orice celulă din tabel și selectați Reîmprospătare, Excel va ieși și va scoate cele mai recente date dintr-o pagină web.
figura 1.4
și puteți chiar să setați datele de interogare pentru a fi actualizate în orice mod doriți. Doar faceți clic dreapta pe orice celulă din tabel, selectați Proprietăți interval de date. În caseta de dialog Proprietăți interval de date externe solicitate, puteți modifica setările de control reîmprospătare pentru a schimba stilul. De exemplu, puteți specifica interogarea care urmează să fie reîmprospătată la fiecare 60 de minute sau când fișierul este deschis.
razuirea datelor utilizând programarea VBA
programarea VBA poate fi utilizată pentru razuirea datelor dintr-o pagină web. Este mult mai util în timp ce dificil atunci când se compară cu prima abordare. Mai mult, trebuie să înțelegeți ce este HTML înainte de a învăța cum să răzuiți datele folosind programarea VBA. Vă recomandăm să învățați cunoștințe de bază despre HTML de pe acest site web dacă nu știți nimic sau puțin despre HTML. Și de aici, puteți afla aproape tot ce are legătură cu razuirea web folosind VBA. Acest articol vă va arăta doar două exemple.
Razuiți datele dintr-o pagină web
să presupunem că dorim să extragem numele companiei, adresa de e-mail și numele persoanei de contact din această pagină web. Dacă deschideți această pagină web, veți găsi că există un bloc de contact în partea de jos. Figura 2.1 prezintă blocul de contact și codul sursă corespunzător. Informațiile din casetele roșii sunt ceea ce vrem să avem nevoie. Iar cele cu subliniere verde sunt exact ceea ce trebuie să extragem.
Figura 2.1
următorul cod vă poate ajuta să extrageți informațiile solicitate mai sus și să le puneți în prima foaie de lucru.
codul sursă |
sub Retrieve_Click ()"creați InternetExplorerSet IE = CreateObject ("InternetExplorer.Aplicație") ' să nu vedem fereastra browserului.Vizibil = fals ' deschide pagina web.Navigați "http://www.austrade.gov.au/SupplierDetails.aspx?ORGID=ORG8160044431&folderid=1736 "' așteptați în timp ce IE se încarcă în timp ce IE.readyState <> 4 sau IE.Ocupat = true Doevents buclă 'prelua numele companiei, adresa de e-mail & contact informationSet contactobj = IE.document.getElementsByClassName ("contact-detalii bloc întuneric") htext = contactobj (0).innerHTML MsgBox htext dacă InStr (htext, " <p> numele companiei: ") atunci ThisWorkbook.Fișe de lucru(1).Cells (1, 1) = Split(Split (htext, " < p > numele companiei: ")(1), "<br") (0) End Dacă dacă InStr (htext, "mailto:") atunci ThisWorkbook.Fișe de lucru(1).Celule(2, 1) = Despică(Despică (htext, " mailto:") (1), Chr(34) & ">")(0) End If if InStr (htext, " <P > Name: ") atunci ThisWorkbook.Fișe de lucru(1).Celule (3, 1) = Despică(Despică (htext, "<p>Nume: ")(1), "<br") (0) încheiați dacă acest lucrucarte de lucru.Fișe de lucru(1).Celule (4, 1) = IE.LocationURL Acest Manual De Lucru.Salvare set IE = nimic set contactobj = nimic sfârșit Sub
„IE.document.getElementsByClassName („contact-details block dark”) ” vă poate permite să obțineți toate elementele cu numele clasei – contact-details block dark. Această pagină web listează aproape toate proprietățile și metodele care pot fi utilizate pe elementele HTML. Puteți alege cea potrivită pentru propria problemă.
proprietatea innerHTML vă poate permite să setați sau să returnați conținutul unui element HTML. În cazul nostru, a returnat conținutul elementului cu numele clasei „contact-details block dark” și l-a setat la o variabilă htext. Conținutul (figura 2.2) poate fi solicitat prin ‘Msgbox htext’.
figura 2.2
puteți vedea că textul este bine structurat. De aceea putem folosi funcția SPLIT pentru a extrage ceea ce au nevoie. De exemplu, dacă luăm ” <p>numele companiei:”ca delimitator și formula” Split (htext, ” <P>numele companiei: „)(1)” poate returna întregul text după „<P > numele companiei:”. Pentru acest text nou returnat, putem lua” <br „ca delimitator și să obținem textul înainte de primul” <br ” și acesta este numele companiei. Pe scurt, funcția SPLIT este un instrument flexibil pe care îl puteți utiliza pentru a extrage aproape totul. Alte funcții utile includ LEN, INSTR, stânga, dreapta, MID și REPLACE. Nu voi discuta în detaliu aici.
după ce faceți clic pe OK în Figura 2.2, datele solicitate pot fi importate de pe web într-o foaie de lucru Excel. De exemplu, celula A1 conține numele companiei, în timp ce celula A4 conține adresa paginii web a companiei.
figura 2.3
adăugând codul de mai jos înainte de a salva registrul de lucru, puteți adăuga un hyperlink la celula A4.
codul sursă |
'adăugați hyperlinkThisWorkbook.Fișe de lucru(1).Hyperlink-uri.Adăugați Acest Lucrucarte De Lucru.Fișe de lucru(1).Celule (4, 1), Astacarte De Lucru.Fișe de lucru(1).Celule(4, 1)
dacă faceți clic pe celula A4, puteți revizui pagina web. Acest lucru este util mai ales atunci când aveți pentru a prelua date pentru o mulțime de companii. Deoarece puteți face clic pe orice hyperlink pentru a revizui pagina web corespunzătoare și pentru a adăuga sau actualiza manual orice informație în timpul revizuirii ulterioare.
figura 2.4
interacționează cu paginile web
exemplul de mai sus ilustrează doar modul de preluare a datelor dintr-o pagină Web statică. Dar, mai mult decât de multe ori, suntem obligați să extragem au interacționat cu pagini web, în scopul de a prelua o cantitate mare de date. Uită-te la figura 3.1. Acesta vă arată cum să ajungeți la pagina web a exemplului de mai sus. Puteți vedea că există o mulțime de industrii și pentru fiecare industrie, există o mulțime de companii. De exemplu, există 651 de companii în industria agroindustrială. Ce ar trebui să facem dacă dorim să extragem informațiile de contact ale tuturor companiilor din toate industriile?
Figura 3.1
Ei bine, punctul cheie este că modul de a face VBA interacționa cu paginile web ca ceea ce facem manual. Să luăm avantajul S. W. I. S ca exemplu. În general, sperăm că Excel poate face clic pe Agribusiness (panoul superior din Figura 3.1) și astfel declanșează IE să ne direcționeze către a doua pagină web. Pe a doua pagină web (panoul de Jos din Figura 3.1), Excel poate face clic pe S. W. I. S Advantage, iar apoi IE ne direcționează către pagina așa cum se arată în figura 2.1, astfel încât să putem prelua informațiile de contact ale S. W. I. S Advantage.
după introducerea următorului cod în Visual Basic Editor și trimiterea codului, veți vedea că IE-ul dvs. este deschis. Apare prima pagină web urmată de a doua pagină web. Aici veți învăța cum să obțineți elementul listă derulantă, să selectați o opțiune și să declanșați un eveniment după ce selectați opțiunea. „m = IE.document.getElementsByTagName („opțiune”).Lungime-1 ” vă va oferi un număr total de opțiuni. Aceasta poate fi utilizată pentru următoarea buclă.
codul sursă |
sub prelua ()"creare InternetExplorerSet IE = CreateObject ("InternetExplorer.Aplicație") ' să vedem fereastra browserului.Vizibil = adevărat ' deschide pagina web.Navigați "http://www.austrade.gov.au/international/buy # "' așteptați în timp ce IE se încarcă în timp ce IE.Aplicație Ocupată.Așteptați DateAdd ("s", 1, Acum) aplicație buclă.Așteptați (acum + TimeValue("00:00:10")) 'Partea 1-Selectați lista verticală și eveniment de declanșare după ce selectați o optionSet selectobj = IE.document.getElementsByTagName ("selectați") m = IE.document.getElementsByTagName ("opțiune").Lungime-1 selectobj (0).selectedIndex = 1 selectobj(0).FireEvent ("onchange") " așteptați în timp ce IE se încarcă în timp ce IE.readyState <> 4 sau IE.Ocupat = Aplicație Adevărată.Așteptați DateAdd ("s", 1, Acum) aplicație buclă.Așteptați (acum + TimeValue("00:00:10")) End Sub
această parte a codului vă poate direcționa către pagina web prezentată în figura 2.1 după ce faceți clic pe Excel pe prenume. Numele tuturor companiilor sunt incluse în elementul cu numele clasei „nume”. Searchobj este o colecție și searchobj (i) poate returna (i+1)obiect lea. De exemplu, searchobj(1).Click vă poate permite să vizitați pagina web pentru RIDLEY CORPORATION (Melbourne).
codul sursă |
'Partea 2-Selectați setul de nume al companiei searchobj = IE.document.getElementsByClassName ("nume") searchobj (0).Faceți clic pe ' Așteptați în timp ce IE se încarcă în timp ce IE.readyState <> 4 sau IE.Ocupat = adevărat Doevents buclă
în cele din urmă, iată întregul cod care vă poate arăta procesul de deschidere IE, navigarea paginilor web și extragerea datelor. Datele extrase vor fi aceleași cu cele din Figura 2.4.
codul sursă |
sub prelua ()"creare InternetExplorerSet IE = CreateObject ("InternetExplorer.Aplicație") ' să vedem fereastra browserului.Vizibil = adevărat ' deschide pagina web.Navigați "http://www.austrade.gov.au/international/buy # "' așteptați în timp ce IE se încarcă în timp ce IE.Aplicație Ocupată.Așteptați DateAdd ("s", 1, Acum) aplicație buclă.Așteptați (acum + TimeValue("00:00:10")) 'Partea 1-Selectați lista verticală și eveniment de declanșare după ce selectați o optionSet selectobj = IE.document.getElementsByTagName ("selectați") m = IE.document.getElementsByTagName ("opțiune").Lungime-1 selectobj (0).selectedIndex = 1 selectobj(0).FireEvent ("onchange") " așteptați în timp ce IE se încarcă în timp ce IE.readyState <> 4 sau IE.Ocupat = Aplicație Adevărată.Așteptați DateAdd ("s", 1, Acum) aplicație buclă.Așteptați (acum + TimeValue("00:00:10")) 'Partea 2-Selectați setul de nume al companiei searchobj = IE.document.getElementsByClassName ("nume") searchobj (0).Faceți clic pe ' Așteptați în timp ce IE se încarcă în timp ce IE.readyState <> 4 sau IE.Busy = true Doevents Loop ' Part 3-preluați numele companiei, adresa de e-mail & contact informationSet contactobj = IE.document.getElementsByClassName ("contact-detalii bloc întuneric") htext = contactobj (0).innerHTML dacă InStr (htext, " <p> numele companiei: ") atunci ThisWorkbook.Fișe de lucru(1).Cells (1, 1) = Split(Split (htext, " < p > numele companiei: ")(1), "<br") (0) End Dacă dacă InStr (htext, "mailto:") atunci ThisWorkbook.Fișe de lucru(1).Celule(2, 1) = Despică(Despică (htext, " mailto:") (1), Chr(34) & ">")(0) End If if InStr (htext, " <P > Name: ") atunci ThisWorkbook.Fișe de lucru(1).Celule (3, 1) = Despică(Despică (htext, "<p>Nume: ")(1), "<br") (0) încheiați dacă acest lucrucarte de lucru.Fișe de lucru(1).Celule (4, 1) = IE.LocationURL ' adăugați hyperlinkThisWorkbook.Fișe de lucru(1).Hyperlink-uri.Adăugați Acest Lucrucarte De Lucru.Fișe de lucru(1).Celule (4, 1), Astacarte De Lucru.Fișe de lucru(1).Celule (4, 1) End Sub
de fapt, ceea ce trebuie să facem este să extragem informații de contact pentru toate companiile din toate industriile, prin urmare, trebuie să folosim declarația For loop pentru a finaliza această sarcină. În urma este codul complet. Și puteți găsi, de asemenea, codul în prelua informații de contact pentru toate companiile.xlsm pe care îl puteți descărca la sfârșitul acestui articol.
codul sursă |
sub prelua () pentru idex = 2 la 18"crearea InternetExplorerSet IE = CreateObject ("InternetExplorer.Aplicație") ' să vedem fereastra browserului.Vizibil = fals ' deschide pagina web.Navigați "http://www.austrade.gov.au/international/buy # "' așteptați în timp ce IE se încarcă în timp ce IE.Aplicație Ocupată.Așteptați DateAdd ("s", 1, Acum) aplicație buclă.Așteptați (acum + TimeValue("00:00:10")) idexn = idex-1 ' Partea 1-Selectați dropdownSet selectobj = IE.document.getElementsByTagName ("selectați") m = IE.document.getElementsByTagName ("opțiune").Lungime-1 selectobj (0).selectedIndex = idexn selectobj (0).FireEvent ("onchange") " așteptați în timp ce IE se încarcă în timp ce IE.readyState <> 4 sau IE.Ocupat = Aplicație Adevărată.Așteptați DateAdd ("s", 1, Acum) aplicație buclă.Așteptați (acum + TimeValue("00:00:10")) wurl = IE . LocationURL tot = IE . document.getElementsByClassName ("SearchTotal") (0).innerHTML pg = Int (tot / 25) + 1 Max = (tot Mod 25) - 1 'Partea 2 - Selectați clasa = "nume"a = 2 pentru j = 1 la pg dacă j = 1 apoi IE.Navigați (wurl) altfel adică.Navigați (wurl &"& pg=" & j) încheiați dacă faceți în timp ce IE.Aplicație Ocupată.Așteptați DateAdd ("s", 1, Acum) buclă dacă j <> pg apoi pentru I = 1 la 24 set searchobj = IE.document.getElementsByClassName ("nume") searchobj (i).Faceți clic pe ' Așteptați în timp ce IE se încarcă în timp ce IE.readyState <> 4 sau IE.Busy = true Doevents Loop ' Part 3-preluați numele companiei, adresa de e-mail & contact informationSet contactobj = IE.document.getElementsByClassName ("contact-detalii bloc întuneric") htext = contactobj (0).innerHTML această carte de lucru.Foi de lucru (idex).Celule (a, 1) = J Acestcarte de lucru.Foi de lucru (idex).Celule (a, 2) = A - 1 Dacă InStr(htext, "<p>numele companiei:") atunci Acestcarte de lucru.Foi de lucru (idex).Cells (a, 3) = Split(Split (htext, " <p > numele companiei: ")(1), "<br") (0) End Dacă dacă InStr (htext, "mailto:") atunci ThisWorkbook.Foi de lucru (idex).Celule (a, 4) = Despică(Despică (htext, " mailto:") (1), Chr(34) & ">")(0) End If if InStr (htext, " <P > Name: ") atunci ThisWorkbook.Foi de lucru (idex).Celule (a, 5) = Despică(Despică (htext, "<p>Nume: ")(1), "<br") (0) încheiați dacă acest lucrucarte de lucru.Foi de lucru (idex).Celule (a, 6) = IE . LocationURL IE.GoBack face în timp ce IE.Aplicație Ocupată.Așteptați DateAdd ("s", 1, Acum) bucla a = a + 1 următor i altceva pentru i = 0 la max set searchobj = IE.document.getElementsByClassName ("nume") searchobj (i).Faceți clic pe ' Așteptați în timp ce IE se încarcă în timp ce IE.readyState <> 4 sau IE.Busy = true Doevents Loop ' Part 3-preluați numele companiei, adresa de e-mail & contact informationSet contactobj = IE.document.getElementsByClassName ("contact-detalii bloc întuneric") htext = contactobj (0).innerHTML această carte de lucru.Foi de lucru (idex).Celule (a, 1) = J Acestcarte de lucru.Foi de lucru (idex).Celule (a, 2) = A - 1 Dacă InStr(htext, "<p>numele companiei:") atunci Acestcarte de lucru.Foi de lucru (idex).Cells (a, 3) = Split(Split (htext, " <p > numele companiei: ")(1), "<br") (0) End Dacă dacă InStr (htext, "mailto:") atunci ThisWorkbook.Foi de lucru (idex).Celule (a, 4) = Despică(Despică (htext, " mailto:") (1), Chr(34) & ">")(0) End If if InStr (htext, " <P > Name: ") atunci ThisWorkbook.Foi de lucru (idex).Celule (a, 5) = Despică(Despică (htext, "<p>Nume: ")(1), "<br") (0) încheiați dacă acest lucrucarte de lucru.Foi de lucru (idex).Celule (a, 6) = IE . LocationURL Acest Manual De Lucru.Foi de lucru (idex).Hyperlink-uri.Adăugați Acest Lucrucarte De Lucru.Foi de lucru (idex).Celule (a, 6), Astacarte de lucru.Foi de lucru (idex).Celule (a, 6)IE.GoBack face în timp ce IE.Aplicație Ocupată.Așteptați DateAdd ("s", 1, Acum) buclă a = a + 1 în continuare termin dacă Astacarte de lucru.Salvați următorul J Set IE = nimic Set contactobj = nimic următor IDEX End Sub
singurul punct pe care trebuie să-l explic este ilustrat în figura 3.2. Un web poate lista doar 25 de companii. Când numărul total de companii este mai mare de 25, vor exista mai multe pagini. Figura 3.2 arată că există o regulă pentru a obține adresa paginilor după prima pagină. Este rezultatul adresei concatenante a primei pagini, „& pg= ” și numărul efectiv al paginii. Și pentru toate paginile înainte de ultima pagină, numărul total al obiectului este 25. „IE.document.getElementsByClassName („SearchTotal”) (0).innerHTML ” poate returna numărul total de companii dintr-o industrie. În cazul nostru, va fi 651. „Int (tot / 25) + 1” puteți obține numărul total de pagini. Și „Max = (tot Mod 25) – 1” poate returna numărul maxim de companii pe ultima pagină. Mă voi opri aici și vă voi lăsa să vă dați seama cum să aplicați această idee codului. Este o abordare mult mai bună pentru tine de a înțelege codul. Puteți lăsa un comentariu dacă aveți întrebări.
figura 3.2
aici vă arată o parte din excel final. Informațiile de Contact pentru toate companiile dintr-o industrie sunt reunite într-o singură foaie de lucru.
figura 3.3
- cum se extrage automat datele de pe site-ul web în Excel?
- importați date (propoziție, paragrafe, tabele, comentarii) din Word în Excel
- 6 Cele mai bune cărți de programare Excel VBA (pentru începători & utilizatori avansați)
- aflați programare Excel VBA & macrocomenzi (Tutorial gratuit – Pas cu pas)
- sfaturi de codare Excel VBA
- ce puteți face cu Vba
- Introducere în macrocomenzile VBA
Descărcați fișierul de lucru
Descărcați fișierul de lucru de la linkul de mai jos.
trageți-date-de la-Web-la-Excel.rar