Hvordan Importere Data fra Et Nettsted Til Excel?
Det er velkjent At World Wide Web inneholder store nyttige data. Vi må imidlertid importere dataene til Microsoft Excel før du gjør noen form for analyse. Det er to metoder du kan bruke til å fullføre denne typen oppgave.
Få Eksterne Data Fra Web Manuelt
Anta At du vil laste ned inntekter om topp moneymaking filmer fra denne nettsiden, her viser deg hvordan du gjør det enkelt.
Åpne Microsoft Excel og klikk På Data-fanen, i Gruppen Hent Eksterne Data, klikk Fra Web. Når Dialogboksen Ny Webspørring vises, kopierer du webadressen (http://www.the-numbers.com/movie/records/All-Time-Worldwide-Box-Office) til Adressefeltet og klikker På Gå-knappen. Excel vil begynne å laste ned nettsiden som vist I Figur 1.1. Bare klikk På Nei hvis du vil få En Skriptfeil advarselsboks som ligner den i figuren nedenfor. Boksen vil forsvinne, og det har ingen innvirkning på importprosessen.
Figur 1.1
det er en pil i den gule boksen øverst til høyre i Dialogboksen Ny Webspørring. Ved å klikke på det, kan du bestemme om du vil vise lignende ikoner før tabeller eller ikke. For eksempel er det ikke noe pilikon ved siden av tabellen i venstre panel I Figur 1.2. Og det vil være et ikon (i høyre panel) når du klikker på pilknappen for å vise ikoner.
Figur 1.2
Klikk pilikonet ved siden av tabellene du vil velge. Ikonene og tabellene endres og ligner på det som vises i venstre panel I Figur 1.3. Når du klikker På Import; En Import Data dialogboks vil bli bedt om. Fyll området (fra kolonne a til kolonne H i vårt tilfelle) der du vil sette dataene og klikk PÅ OK.
Figur 1.3
dataene importeres til Excel etter at Du har klikket På Ok. Hvis du høyreklikker på en celle i tabellen og velger Oppdater, Vil Excel gå ut og trekke ut de nyeste dataene fra en nettside.
Figur 1.4
Og du kan selv angi spørringsdataene skal oppdateres på noen måte du ønsker. Bare høyreklikk på en celle i tabellen, velg Data Range Properties. I dialogboksen Egenskaper For Eksternt Dataområde kan du endre Innstillingene For Oppdateringskontroll for Å endre stilen. Du kan for eksempel angi at spørringen skal oppdateres hvert 60. minutt eller når filen åpnes.
Skrape data ved HJELP AV VBA programmering
VBA programmering kan brukes til å skrape data fra en nettside. Det er mye mer nyttig mens vanskelig når man sammenligner mot den første tilnærmingen. Videre må du forstå HVA HTML er før du lærer å skrape data ved HJELP AV VBA-programmering. Jeg anbefaler deg å lære grunnleggende kunnskap OM HTML fra denne nettsiden hvis du ikke vet noe eller lite OM HTML. Og herfra kan du lære nesten alt relatert til nettskraping ved HJELP AV VBA. Denne artikkelen vil bare vise deg to eksempler.
Skrape data fra en nettside
Anta At vi vil trekke ut firmanavnet, e-postadressen og kontaktnavnet fra denne nettsiden. Hvis du åpner denne nettsiden, finner du at det er en kontaktblokk nederst. Figur 2.1 viser kontaktblokken og tilhørende kildekode. Informasjon i røde bokser er det vi ønsker å trenge. Og de med en grønn understreking er akkurat det vi trenger å trekke ut.
Figur 2.1
følgende kode kan hjelpe deg med å trekke ut informasjonen ovenfor og sette dem i det første regnearket.
Kildekode |
Sub Retrieve_Click () ' Opprett InternetExplorerSet IE = CreateObject ("InternetExplorer.Application") ' La Oss ikke se nettleseren windowIE.Visible = False ' Åpne nettsiden.Naviger "http://www.austrade.gov.au/SupplierDetails.aspx?ORGID=ORG8160044431&folderid=1736 "' Vent MENS IE laster Mens IE.readyState < > 4 ELLER IE.Opptatt = True DoEvents Loop ' Hente firmanavn ,e-postadresse & kontaktinformationset contactobj = IE.dokument.getElementsByClassName ("kontakt-detaljer blokk mork") htext = contactobj (0).innerHTML MsgBox htext Hvis InStr (htext, " <p > Firmanavn:") Så ThisWorkbook.Arbeidsark (1).Celler(1, 1) = Delt(Delt (htext, " <p > Firmanavn: ")(1), "<br") (0) Slutt Hvis Hvis InStr (htext, " mailto:") Så ThisWorkbook.Arbeidsark (1).Celler(2, 1) = Delt (Delt (htext, " mailto:") (1), Chr(34) & ">")(0) Avslutt Hvis Hvis InStr (htext, " < p > Name:") Så ThisWorkbook.Arbeidsark (1).Celler(3, 1) = Delt(Delt (htext, " < p > Navn: ")(1), "<br") (0) Slutt Hvis ThisWorkbook.Arbeidsark (1).Celler (4, 1) = IE.LocationURL ThisWorkbook.Lagre Sett IE = Ingenting Sett contactobj = Ingenting Slutt Sub
«DVS.dokument.getElementsByClassName («kontakt-detaljer block dark») » kan gjøre deg i stand til å få alle elementer med klassen navn-kontakt-detaljer block dark. Denne nettsiden viser nesten alle egenskaper og metoder som kan brukes PÅ HTML-elementer. Du kan velge riktig for ditt eget problem.
egenskapen innerHTML kan tillate deg å angi eller returnere innholdet I ET HTML-element. I vårt tilfelle returnerte det innholdet av elementet med klassenavnet «kontaktdetaljer block dark» og sett det til en variabel htext. Innholdet (Figur 2.2) kan bli bedt om Av ‘Msgbox htext’.
Figur 2.2
du kan se at teksten er godt strukturert. Det er derfor VI kan bruke DELT funksjon for å trekke ut det behovet. For eksempel, hvis vi tar » <p > Firmanavn:»Som skilletegn og formel» Split (htext, «<p > Firmanavn:») (1) «kan returnere hele teksten etter» <p > Firmanavn:». For denne nylig returnerte teksten kan vi ta «< br «som en avgrensning og få teksten før den første» < br » og det er firmanavnet. OPPSUMMERT ER SPLIT-funksjonen et fleksibelt verktøy som du kan bruke til å trekke ut nesten alt. Andre nyttige funksjoner inkluderer LEN, INSTR, VENSTRE, HØYRE, MID og ERSTATT. Jeg vil ikke diskutere i detalj her.
etter at DU har klikket PÅ OK I Figur 2.2, kan de forespurte dataene importeres fra nettet til Et Excel-regneark. Celle A1 inneholder For eksempel Firmanavnet, mens celle A4 inneholder firmaets web – sideadresse.
Figur 2.3
ved å legge til koden nedenfor før du lagrer arbeidsboken, kan du legge til en hyperkobling i celle A4.
Kildekode |
'Legg til hyperlinkThisWorkbook.Arbeidsark (1).Hyperkoblinger.Legg ThisWorkbook.Arbeidsark (1).Celler (4, 1), Dettearbeidsbok.Arbeidsark (1).Celler(4, 1)
hvis du klikker på celle A4, kan du gå tilbake til nettsiden. Dette er nyttig spesielt når du må hente data for mange selskaper. Siden du kan klikke på en hyperkobling for å gå tilbake til den tilsvarende nettsiden og legge til eller oppdatere informasjon manuelt under gjennomgang senere.
Figur 2.4
Interagere med websider
eksemplet ovenfor illustrerer bare hvordan du henter data fra en statisk nettside. Men mer enn ofte, vi er pålagt å trekke ut har samhandlet med websider for å hente en stor mengde data. Se Figur 3.1. Det viser deg hvordan du kommer til nettsiden til eksemplet ovenfor. Du kan se at det er mange bransjer, og for hver bransje er det mange selskaper. For eksempel er det 651 selskaper I Agribusiness industrien. Hva skal vi gjøre hvis vi ønsker å trekke ut kontaktinformasjonen til alle selskapene fra alle bransjer?
Figur 3.1
vel, nøkkelpunktet er at HVORDAN Å lage VBA samhandle med nettsider som det vi gjør manuelt. La Oss ta S. W. I. S Advantage som et eksempel. Generelt håper Vi At Excel kan klikke På Agribusiness (topppanel I Figur 3.1) og dermed utløse IE for å lede oss til den andre nettsiden. På den andre nettsiden (bunnpanelet I Figur 3.1) Kan Excel klikke På S. W. I. S Advantage, OG DERETTER IE leder oss til siden som vist i Figur 2.1 slik at Vi kan hente kontaktinformasjon Til S. W. I. S Advantage.
etter at du har tastet inn følgende kode I Visual Basic Editor og sendt inn koden, vil DU se AT IE er åpnet. Den første websiden vises etterfulgt av den andre websiden. Her lærer du hvordan du får nedtrekkslisteelementet, for å velge et alternativ, og å utløse en hendelse etter at du har valgt alternativet. «m = IE.dokument.getElementsByTagName («alternativ»).Lengde-1 » vil gi deg et totalt antall alternativer. Dette kan brukes til neste sløyfe.
Kildekode |
Sub hente () ' Opprett InternetExplorerSet IE = CreateObject ("InternetExplorer.Søknad") ' La oss se nettleseren windowIE.Visible = True ' Åpne nettsiden.Naviger "http://www.austrade.gov.au/international/buy # "' Vent MENS IE er loadingDo Mens IE.Opptatt Søknad.Vent DateAdd ("s", 1, Nå) Loop Søknad.Vent ( Nå + TimeValue("00:00:10")) 'Del 1-Velg rullegardinlisten og utløse hendelsen etter at du har valgt en optionSet selectobj = IE.dokument.getElementsByTagName ("velg") m = IE.dokument.getElementsByTagName ("alternativ").Lengde-1 selectobj (0).selectedIndex = 1 selectobj (0).FireEvent ("onchange") 'Vent MENS IE er loadingDo Mens IE.readyState < > 4 ELLER IE.Opptatt = Sann Applikasjon.Vent DateAdd ("s", 1, Nå) Loop Søknad.Vent ( Nå + TimeValue("00:00:10")) Slutt Sub
Denne delen av koden kan henvise deg til nettsiden vist I Figur 2.1 Etter Excel klikk på fornavnet. Alle selskapenes navn er inkludert i elementet med klassenavnet «Navn». Searchobj er en samling og searchobj (i) kan returnere (i+1)th objekt. For eksempel, searchobj (1).Klikk kan gjøre det mulig å besøke nettsiden FOR RIDLEY CORPORATION (Melbourne).
Kildekode |
'Del 2-Velg firmanavn searchobj = IE.dokument.getElementsByClassName ("Navn") searchobj (0).Klikk ' Vent MENS IE er loadingDo Mens IE.readyState < > 4 ELLER IE.Opptatt = True DoEvents Loop
Endelig, her er hele koden som kan vise deg prosessen med å åpne IE, surfing websider, og trekke ut data. Dataene som trekkes ut vil være de Samme Som I Figur 2.4.
Kildekode |
Sub Hente () ' Opprett InternetExplorerSet IE = CreateObject ("InternetExplorer.Søknad") ' La oss se nettleseren windowIE.Visible = True ' Åpne nettsiden.Naviger "http://www.austrade.gov.au/international/buy # "' Vent MENS IE er loadingDo Mens IE.Opptatt Søknad.Vent DateAdd ("s", 1, Nå) Loop Søknad.Vent ( Nå + TimeValue("00:00:10")) 'Del 1-Velg rullegardinlisten og utløse hendelsen etter at du har valgt en optionSet selectobj = IE.dokument.getElementsByTagName ("velg") m = IE.dokument.getElementsByTagName ("alternativ").Lengde-1 selectobj (0).selectedIndex = 1 selectobj (0).FireEvent ("onchange") 'Vent MENS IE er loadingDo Mens IE.readyState < > 4 ELLER IE.Opptatt = Sann Applikasjon.Vent DateAdd ("s", 1, Nå) Loop Søknad.Vent ( Nå + TimeValue("00:00:10")) 'Del 2-Velg firmanavn searchobj = IE.dokument.getElementsByClassName ("Navn") searchobj (0).Klikk ' Vent MENS IE er loadingDo Mens IE.readyState < > 4 ELLER IE.Busy = True DoEvents Loop ' Part 3-Hent firmanavn ,e-postadresse & kontaktinformationset contactobj = IE.dokument.getElementsByClassName ("kontakt-detaljer blokk mork") htext = contactobj (0).innerHTML Hvis InStr (htext, " <p > Firmanavn:") Så ThisWorkbook.Arbeidsark (1).Celler(1, 1) = Delt(Delt (htext, " <p > Firmanavn: ")(1), "<br") (0) Slutt Hvis Hvis InStr (htext, " mailto:") Så ThisWorkbook.Arbeidsark (1).Celler(2, 1) = Delt (Delt (htext, " mailto:") (1), Chr(34) & ">")(0) Avslutt Hvis Hvis InStr (htext, " < p > Name:") Så ThisWorkbook.Arbeidsark (1).Celler(3, 1) = Delt(Delt (htext, " < p > Navn: ")(1), "<br") (0) Slutt Hvis ThisWorkbook.Arbeidsark (1).Celler (4, 1) = IE.LocationURL ' Legg til hyperlinkThisWorkbook.Arbeidsark (1).Hyperkoblinger.Legg ThisWorkbook.Arbeidsark (1).Celler (4, 1), Dettearbeidsbok.Arbeidsark (1).Celler (4, 1) End Sub
faktisk, det vi trenger å gjøre er å trekke ut kontaktinformasjon for alle selskaper fra alle bransjer, derfor må vi gjøre bruk for loop statement for å fullføre denne oppgaven. Følgende er den komplette koden. Og du kan også finne koden I Hente kontaktinformasjon for alle selskaper.xlsm som du kan laste ned på slutten av denne artikkelen.
Kildekode |
Sub Hente () for idex = 2 Til 18 ' Opprett InternetExplorerSet IE = CreateObject ("InternetExplorer.Søknad") ' La oss se nettleseren windowIE.Visible = False ' Åpne nettsiden.Naviger "http://www.austrade.gov.au/international/buy # "' Vent MENS IE er loadingDo Mens IE.Opptatt Søknad.Vent DateAdd ("s", 1, Nå) Loop Søknad.Vent ( Nå + TimeValue("00:00:10")) idexn = idex - 1 ' Del 1-Velg dropdownSet selectobj = IE.dokument.getElementsByTagName ("velg") m = IE.dokument.getElementsByTagName ("alternativ").Lengde-1 selectobj (0).selectedIndex = idexn selectobj (0).FireEvent ("onchange") 'Vent MENS IE er loadingDo Mens IE.readyState < > 4 ELLER IE.Opptatt = Sann Applikasjon.Vent DateAdd ("s", 1, Nå) Loop Søknad.Vent ( Nå + TimeValue("00:00:10")) wurl = IE . LocationURL tot = IE . dokument.getElementsByClassName ("SearchTotal") (0).innerHTML pg = Int (tot / 25) + 1 Max = (tot Mod 25) - 1 'Del 2 - Velg Klasse = "Navn"a = 2 for j = 1 til pg Hvis j = 1 DA IE.Naviger (wurl) Ellers DVS.Naviger (wurl &"& pg= " & j) Slutt Hvis Gjør MENS IE.Opptatt Søknad.Vent DateAdd ("s", 1, Nå) Sløyfe hvis j < > pg Deretter For i = 1 Til 24 Sett searchobj = IE.dokument.getElementsByClassName("Navn") searchobj (i).Klikk ' Vent MENS IE er loadingDo Mens IE.readyState < > 4 ELLER IE.Busy = True DoEvents Loop ' Part 3-Hent firmanavn ,e-postadresse & kontaktinformationset contactobj = IE.dokument.getElementsByClassName ("kontakt-detaljer blokk mork") htext = contactobj (0).innerHTML ThisWorkbook.Regneark (idex).Celler (a, 1 ) = J ThisWorkbook.Regneark (idex).Celler (a, 2) = A-1 Hvis InStr (htext, " <p > Firmanavn:") Så ThisWorkbook.Regneark (idex).Celler (a, 3) = Delt(Delt (htext, " <p > Firmanavn: ")(1), "<br") (0) Slutt Hvis Hvis InStr (htext, " mailto:") Så ThisWorkbook.Regneark (idex).Celler (a, 4) = Delt (Delt (htext, " mailto:") (1), Chr(34) & ">")(0) Avslutt Hvis Hvis InStr (htext, " < p > Name:") Så ThisWorkbook.Regneark (idex).Celler (a, 5) = Delt(Delt (htext, " < p > Navn: ")(1), "<br") (0) Slutt Hvis ThisWorkbook.Regneark (idex).Celler (a, 6) = IE.Lokasjonurl IE.GoBack Gjøre MENS IE.Opptatt Søknad.Vent DateAdd ("s", 1, Nå) Sløyfe a = a + 1 Neste Jeg Ellers for i = 0 Til Maks Sett searchobj = IE.dokument.getElementsByClassName("Navn") searchobj (i).Klikk ' Vent MENS IE er loadingDo Mens IE.readyState < > 4 ELLER IE.Busy = True DoEvents Loop ' Part 3-Hent firmanavn ,e-postadresse & kontaktinformationset contactobj = IE.dokument.getElementsByClassName ("kontakt-detaljer blokk mork") htext = contactobj (0).innerHTML ThisWorkbook.Regneark (idex).Celler (a, 1 ) = J ThisWorkbook.Regneark (idex).Celler (a, 2) = A-1 Hvis InStr (htext, " <p > Firmanavn:") Så ThisWorkbook.Regneark (idex).Celler (a, 3) = Delt(Delt (htext, " <p > Firmanavn: ")(1), "<br") (0) Slutt Hvis Hvis InStr (htext, " mailto:") Så ThisWorkbook.Regneark (idex).Celler (a, 4) = Delt (Delt (htext, " mailto:") (1), Chr(34) & ">")(0) Avslutt Hvis Hvis InStr (htext, " < p > Name:") Så ThisWorkbook.Regneark (idex).Celler (a, 5) = Delt(Delt (htext, " < p > Navn: ")(1), "<br") (0) Slutt Hvis ThisWorkbook.Regneark (idex).Celler (a, 6) = IE.LocationURL ThisWorkbook.Regneark (idex).Hyperkoblinger.Legg ThisWorkbook.Regneark (idex).Celler (a, 6), Dettearbeidsbok.Regneark (idex).Celler (a, 6) DVS.GoBack Gjøre MENS IE.Opptatt Søknad.Vent DateAdd ("s", 1, Nå) Loop a = a + 1 Neste Jeg Ender Hvis ThisWorkbook.Lagre Neste J Sett IE = Ingenting Sett contactobj = Ingenting neste idex End Sub
Det eneste jeg trenger å forklare er illustrert i Figur 3.2. En web kan liste bare så mange som 25 selskaper. Når det totale antall selskaper er større enn 25, vil det være mer enn en side. Figur 3.2 viser at det er en regel å få adressen til sidene etter den første siden. Det er resultatet av den sammenkoblede adressen til den første siden, «&pg= » og det faktiske sidetallet. Og for alle sider før siste side er det totale objektnummeret 25. «DVS.dokument.getElementsByClassName («SearchTotal») (0).innerHTML » kan returnere det totale antall selskaper i en bransje. I vårt tilfelle blir det 651. «Int (tot / 25) + 1» kan få deg totalt antall sider. Og «Max = (tot Mod 25) – 1» kan returnere maks antall selskaper på den siste siden. Jeg vil stoppe her og la deg finne ut hvordan du bruker denne ideen til koden. Det er en mye bedre tilnærming for deg å forstå koden. Du kan legge igjen en kommentar hvis du har spørsmål.
Figur 3.2
her viser du en del av den endelige excel. Kontaktinformasjon for alle selskaper innen en bransje er satt sammen i ett regneark.
Figur 3.3
- hvordan trekke ut data fra nettstedet Til Excel automatisk?
- Importer Data (Setning, Avsnitt, Tabeller, Kommentarer) Fra Word Til Excel
- 6 Beste Excel Vba Programmering Bøker (For Nybegynnere& Avanserte Brukere)
- Lær Excel Vba Programmering& Makroer (Gratis Tutorial – Steg For Steg)
- Excel Vba Koding Tips
- Hva Du kan gjøre Med Vba
- Introduksjon Til Vba-Makroer
Last Ned Arbeidsfil
Last Ned Arbeidsfilen Fra Lenken Nedenfor.
Trekk-Data-Fra-Web-Til-Excel.rar