hur importerar du Data från en webbplats till Excel?

det är välkänt att World Wide Web innehåller enorma användbara data. Vi måste dock importera data till Microsoft Excel innan vi gör någon form av analys. Det finns två metoder som du kan använda för att slutföra denna typ av uppgift.

hämta externa Data från webben manuellt

Antag att du vill ladda ner intäkter om bästa moneymaking filmer från denna webbsida, här visar hur du gör det enkelt.

öppna Microsoft Excel och klicka på fliken Data, i gruppen hämta externa Data, Klicka på från Web. När dialogrutan Ny webbfråga visas kopierar du webbadressen (http://www.the-numbers.com/movie/records/All-Time-Worldwide-Box-Office) till adressfältet och klickar på Go-knappen. Excel kommer att börja ladda ner webbsidan som visas i Figur 1.1. Klicka bara på Nej Om du får en varningsruta för skriptfel som liknar den i figuren nedan. Lådan kommer att försvinna och det har ingen inverkan på din importprocess.

importera data från webben till Excel Fig 1.1

Figur 1.1

det finns en pil i den gula rutan i det övre högra hörnet av dialogrutan Ny webbfråga. Genom att klicka på den kan du bestämma om du vill visa liknande ikoner före tabeller eller inte. Det finns till exempel ingen pilikon bredvid tabellen i den vänstra panelen i Figur 1.2. Och det kommer att finnas en ikon (i den högra panelen) när du klickar på pilknappen för att visa ikoner.

importera data från webben till Excel Fig 1.2

figur 1.2

klicka på pilikonen bredvid tabellerna som du vill välja. Ikonerna och tabellerna ändras och liknar dem som visas i den vänstra panelen i Figur 1.3. När du klickar på Importera kommer en dialogruta för importdata att uppmanas. Fyll i intervallet (från kolumn A till kolumn H i vårt fall) där du vill lägga data och klicka på OK.

importera data från webben till Excel Fig 1.3

figur 1.3

data importeras till Excel när du klickar på Ok. Om du högerklickar på någon cell i tabellen och väljer Uppdatera, kommer Excel att gå ut och dra ut de senaste uppgifterna från en webbsida.

importera data från webben till Excel Fig 1.4

figur 1.4

och du kan till och med ställa in dina frågedata för att uppdateras på vilket sätt du vill. Högerklicka bara på vilken cell som helst i tabellen, välj Data Range Properties. I dialogrutan Egenskaper för externa dataintervall kan du ändra inställningarna för uppdateringskontroll för att ändra formatet. Du kan till exempel ange frågan som ska uppdateras var 60: e minut eller när filen öppnas.

importera data från webben till Excel Fig 1.5

importera data från webben till Excel Fig 1.5

skrapa data med VBA-programmering

VBA-programmering kan användas för att skrapa data från en webbsida. Det är mycket mer användbart medan det är svårt att jämföra med det första tillvägagångssättet. Dessutom måste du förstå vad HTML är innan du lär dig att skrapa data med VBA-programmering. Jag rekommenderar dig att lära dig grundläggande kunskaper om HTML från den här webbplatsen om du inte vet något eller lite om HTML. Och härifrån kan du lära dig nästan allt relaterat till webbskrapning med VBA. Den här artikeln visar bara två exempel.

skrapa data från en webbsida

Antag att vi vill extrahera företagsnamn, e-postadress och kontaktnamn från den här webbsidan. Om du öppnar den här webbsidan kommer du att upptäcka att det finns ett kontaktblock längst ner. Figur 2.1 visar kontaktblocket och motsvarande källkod. Information i röda rutor är vad vi vill behöva. Och de med en grön understrykning är exakt vad vi behöver extrahera.

importera data från webben till Excel Fig 2.1

Figur 2.1

följande kod kan hjälpa dig att extrahera ovanstående begärda information och lägga dem i det första kalkylbladet.

källkod
Sub Retrieve_Click () ' skapa InternetExplorerSet IE = CreateObject ("InternetExplorer.Ansökan") ' Låt oss inte se webbläsaren windowIE.Visible = False ' öppna webbsidan.Navigera "http://www.austrade.gov.au/SupplierDetails.aspx?ORGID=ORG8160044431&folderid=1736 "' vänta medan IE laddas medan IE.readyState <> 4 eller IE.Busy = True DoEvents Loop ' hämta företagsnamn, e-postadress & contact informationSet contactobj = IE.dokument.getElementsByClassName ("kontakt-detaljer blockera mörk") htext = contactobj (0).innerHTML MsgBox htext om InStr(htext, " <p>företagsnamn:") då ThisWorkbook.Arbetsblad (1).Celler (1, 1) = Split (Split (htext, " <p> företagsnamn: ")(1), "<br") (0) slut Om Om InStr (htext, "mailto:") då ThisWorkbook.Arbetsblad (1).Celler (2, 1) = Split (Split (htext, " mailto:") (1), Chr(34) & ">")(0) Avsluta om om InStr (htext, "<p>namn: ") då ThisWorkbook.Arbetsblad (1).Celler (3, 1) = Split (Split (htext, " <p>Namn: ")(1), "<br") (0) slut om Dettaarbetsbok.Arbetsblad (1).Celler (4, 1) = IE.LocationURL ThisWorkbook.Spara Set IE = ingenting set contactobj = inget slut Sub

”dvs.dokument.getElementsByClassName (”contact-details block dark”) ” kan göra det möjligt för dig att få alla element med klassnamnet – contact-details block dark. Denna webbsida listar nästan alla egenskaper och metoder som kan användas på HTML-element. Du kan välja lämplig för ditt eget problem.

egenskapen innerHTML låter dig ställa in eller returnera innehållet i ett HTML-element. I vårt fall returnerade det innehållet i elementet med klassnamnet ”contact-details block dark” och ställde det till en variabel htext. Innehållet (figur 2.2) kan uppmanas av ’Msgbox htext’.

importera data från webben till Excel Fig 2.2

figur 2.2

du kan se att texten är välstrukturerad. Det är därför vi kan använda delad funktion för att extrahera vad som behöver. Om vi till exempel tar ” <p>företagsnamn:”som avgränsare och Formel ”Split(htext, ”<p>företagsnamn:”) (1) ”kan returnera hela texten efter”<p>företagsnamn:”. För denna nyligen returnerade text kan vi ta ”<br” som avgränsare och få texten före den första ”< br” och det är företagsnamnet. Sammanfattningsvis är SPLIT-funktionen ett flexibelt verktyg som du kan använda för att extrahera nästan allt. Andra användbara funktioner inkluderar LEN, INSTR, vänster, höger, mitten och ersätt. Jag kommer inte att diskutera i detalj här.

när du klickar på OK i Figur 2.2, de begärda uppgifterna kan importeras från webben till ett Excel-kalkylblad. Till exempel innehåller cell A1 företagsnamnet medan cell A4 innehåller företagets webbadress.

importera data från webben till Excel Fig 2.3

figur 2.3

genom att lägga till koden nedan innan du sparar arbetsboken kan du lägga till en hyperlänk i cell A4.

källkod
'Lägg till hyperlinkThisWorkbook.Arbetsblad (1).Hyperlänkar.Lägg Till Dettaarbetsbok.Arbetsblad (1).Celler (4, 1), Dettaarbetsbok.Arbetsblad (1).Celler(4, 1)

om du klickar på cell A4 kan du besöka webbsidan igen. Detta är användbart särskilt när du måste hämta data för många företag. Eftersom du kan klicka på någon hyperlänk för att besöka motsvarande webbsida och lägga till eller uppdatera information manuellt under granskning senare.

importera data från webben till Excel Fig 2.4

figur 2.4

interagera med webbsidor

ovanstående exempel illustrerar bara hur man hämtar data från en statisk webbsida. Men mer än ofta är vi skyldiga att extrahera har interagerat med webbsidor för att hämta en stor mängd data. Se figur 3.1. Det visar hur du kommer till webbsidan i ovanstående exempel. Du kan se att det finns många branscher och för varje bransch finns det många företag. Till exempel finns det 651 företag inom jordbruksnäringen. Vad ska vi göra om vi vill extrahera kontaktinformationen för alla företag från alla branscher?

importera data från webben till Excel Fig 3.1

Figur 3.1

Tja, den viktigaste punkten är att hur man gör VBA interagera med webbsidor som vad vi gör manuellt. Låt oss ta S. W. I. S fördel som ett exempel. Generellt hoppas vi att Excel kan klicka på Agribusiness (topppanel i Figur 3.1) och därmed utlösa IE för att rikta oss till den andra webbsidan. På den andra webbsidan (nedre panelen i Figur 3.1) kan Excel klicka på S. W. I. s Advantage, och sedan leder IE oss till sidan som visas i Figur 2.1 så att vi kan hämta kontaktinformation för S. W. I. S Advantage.

när du har angett följande kod i Visual Basic Editor och skickat in koden ser du att din IE öppnas. Den första webbsidan visas följt av den andra webbsidan. Här lär du dig hur du får listrutan, väljer ett alternativ och utlöser en händelse efter att du har valt alternativet. ”m = IE.dokument.getElementsByTagName (”alternativ”).Längd-1 ” ger dig ett totalt antal alternativ. Detta kan användas för nästa slinga.

källkod
Sub hämta () ' skapa InternetExplorerSet IE = CreateObject("InternetExplorer.Application") ' Låt oss se webbläsaren windowIE.Visible = True ' öppna webbsidan.Navigera "http://www.austrade.gov.au/international/buy # "' vänta medan IE laddas medan IE.Upptagen Ansökan.Vänta DateAdd ("s", 1, Nu) Loop ansökan.Vänta (nu + TimeValue("00:00:10")) 'Del 1-Välj rullgardinslista och utlösningshändelse när du har valt ett alternativset selectobj = IE.dokument.getElementsByTagName ("välj") m = IE.dokument.getElementsByTagName ("alternativ").Längd-1 väljobj (0).selectedIndex = 1 selectobj (0).FireEvent ("onchange") 'vänta medan IE är loadingDo medan IE.readyState <> 4 eller IE.Upptagen = Sann Ansökan.Vänta DateAdd ("s", 1, Nu) Loop ansökan.Vänta (nu + TimeValue("00:00:10")) slutet Sub

denna del av koden kan hänvisa dig till webbsidan som visas i Figur 2.1 efter Excel klicka på förnamnet. Alla företagsnamn ingår i elementet med klassnamnet ”namn”. Searchobj är en samling och searchobj (i)kan returnera (i+1) th objekt. Till exempel, searchobj(1).Klicka kan du besöka webbsidan för RIDLEY CORPORATION (Melbourne).

källkod
'del 2-Välj företagsnamn searchobj = IE.dokument.getElementsByClassName ("namn") sökobj (0).Klicka på ' Vänta medan IE laddas medan IE.readyState <> 4 eller IE.Upptagen = True DoEvents Loop

slutligen, här är hela koden som kan visa dig processen att öppna IE, surfa på webbsidor och extrahera data. De data som extraheras kommer att vara desamma som i Figur 2.4.

källkod
Sub hämta () ' skapa InternetExplorerSet IE = CreateObject("InternetExplorer.Application") ' Låt oss se webbläsaren windowIE.Visible = True ' öppna webbsidan.Navigera "http://www.austrade.gov.au/international/buy # "' vänta medan IE laddas medan IE.Upptagen Ansökan.Vänta DateAdd ("s", 1, Nu) Loop ansökan.Vänta (nu + TimeValue("00:00:10")) 'Del 1-Välj rullgardinslista och utlösningshändelse när du har valt ett alternativset selectobj = IE.dokument.getElementsByTagName ("välj") m = IE.dokument.getElementsByTagName ("alternativ").Längd-1 väljobj (0).selectedIndex = 1 selectobj (0).FireEvent ("onchange") 'vänta medan IE är loadingDo medan IE.readyState <> 4 eller IE.Upptagen = Sann Ansökan.Vänta DateAdd ("s", 1, Nu) Loop ansökan.Vänta (nu + TimeValue("00:00:10")) 'del 2-Välj företagsnamn searchobj = IE.dokument.getElementsByClassName ("namn") sökobj (0).Klicka på ' Vänta medan IE laddas medan IE.readyState <> 4 eller IE.Busy = True DoEvents Loop ' del 3-Hämta företagsnamn, e-postadress & contact informationSet contactobj = IE.dokument.getElementsByClassName ("kontakt-detaljer blockera mörk") htext = contactobj (0).innerHTML om InStr (htext, " <p>företagsnamn:") då ThisWorkbook.Arbetsblad (1).Celler (1, 1) = Split (Split (htext, " <p> företagsnamn: ")(1), "<br") (0) slut Om Om InStr (htext, "mailto:") då ThisWorkbook.Arbetsblad (1).Celler (2, 1) = Split (Split (htext, " mailto:") (1), Chr(34) & ">")(0) Avsluta om om InStr (htext, "<p>namn: ") då ThisWorkbook.Arbetsblad (1).Celler (3, 1) = Split (Split (htext, " <p>Namn: ")(1), "<br") (0) slut om Dettaarbetsbok.Arbetsblad (1).Celler (4, 1) = IE.LocationURL ' Lägg till hyperlinkThisWorkbook.Arbetsblad (1).Hyperlänkar.Lägg Till Dettaarbetsbok.Arbetsblad (1).Celler (4, 1), Dettaarbetsbok.Arbetsblad (1).Celler (4, 1) slutet Sub

faktum är att vad vi behöver göra är att extrahera kontaktinformation för alla företag från alla branscher, därför måste vi använda för loop-uttalande för att slutföra denna uppgift. Följande är den fullständiga koden. Och du kan också hitta koden I hämta kontaktinformation för alla företag.xlsm som du kan ladda ner i slutet av den här artikeln.

källkod
Sub Hämta () för idex = 2 till 18 'skapa InternetExplorerSet IE = CreateObject ("InternetExplorer.Application") ' Låt oss se webbläsaren windowIE.Visible = False ' öppna webbsidan.Navigera "http://www.austrade.gov.au/international/buy # "' vänta medan IE laddas medan IE.Upptagen Ansökan.Vänta DateAdd ("s", 1, Nu) Loop ansökan.Vänta (nu + TimeValue("00:00:10")) idexn = idex - 1 ' del 1 - Välj dropdownSet selectobj = IE.dokument.getElementsByTagName ("välj") m = IE.dokument.getElementsByTagName ("alternativ").Längd-1 väljobj (0).selectedIndex = idexn selectobj (0).FireEvent ("onchange") 'vänta medan IE är loadingDo medan IE.readyState <> 4 eller IE.Upptagen = Sann Ansökan.Vänta DateAdd ("s", 1, Nu) Loop ansökan.Vänta (nu + 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 - Välj klass = "Namn"a = 2 för j = 1 till pg om j = 1 då IE.Navigera (wurl) annat dvs.Navigera (wurl &" & pg= " & j) Avsluta om gör medan IE.Upptagen Ansökan.Vänta DateAdd ("s", 1, Nu) Loop om j <> pg sedan för i = 1 till 24 Set searchobj = IE.dokument.getElementsByClassName ("namn") sökobj (i).Klicka på ' Vänta medan IE laddas medan IE.readyState <> 4 eller IE.Busy = True DoEvents Loop ' del 3-Hämta företagsnamn, e-postadress & contact informationSet contactobj = IE.dokument.getElementsByClassName ("kontakt-detaljer blockera mörk") htext = contactobj (0).innerHTML Dettaarbetsbok.Kalkylblad (idex).Celler (a, 1) = J ThisWorkbook.Kalkylblad (idex).Celler (a, 2) = a - 1 Om InStr(htext, "<p>företagsnamn:") då ThisWorkbook.Kalkylblad (idex).Celler (a, 3) = Split (Split (htext, " <p> företagsnamn: ")(1), "<br") (0) slut Om Om InStr (htext, "mailto:") då ThisWorkbook.Kalkylblad (idex).Celler (a, 4) = Split (Split (htext, " mailto:") (1), Chr(34) & ">")(0) Avsluta om om InStr (htext, "<p>namn: ") då ThisWorkbook.Kalkylblad (idex).Celler (a, 5) = Split (Split (htext, " <p>Namn: ")(1), "<br") (0) slut om Dettaarbetsbok.Kalkylblad (idex).Celler (a, 6) = IE.Platsurl IE.GoBack gör medan IE.Upptagen Ansökan.Vänta DateAdd ("s", 1, Nu) Loop a = a + 1 nästa jag annars för i = 0 till Max Set searchobj = IE.dokument.getElementsByClassName ("namn") sökobj (i).Klicka på ' Vänta medan IE laddas medan IE.readyState <> 4 eller IE.Busy = True DoEvents Loop ' del 3-Hämta företagsnamn, e-postadress & contact informationSet contactobj = IE.dokument.getElementsByClassName ("kontakt-detaljer blockera mörk") htext = contactobj (0).innerHTML Dettaarbetsbok.Kalkylblad (idex).Celler (a, 1) = J ThisWorkbook.Kalkylblad (idex).Celler (a, 2) = a - 1 Om InStr(htext, "<p>företagsnamn:") då ThisWorkbook.Kalkylblad (idex).Celler (a, 3) = Split (Split (htext, " <p> företagsnamn: ")(1), "<br") (0) slut Om Om InStr (htext, "mailto:") då ThisWorkbook.Kalkylblad (idex).Celler (a, 4) = Split (Split (htext, " mailto:") (1), Chr(34) & ">")(0) Avsluta om om InStr (htext, "<p>namn: ") då ThisWorkbook.Kalkylblad (idex).Celler (a, 5) = Split (Split (htext, " <p>Namn: ")(1), "<br") (0) slut om Dettaarbetsbok.Kalkylblad (idex).Celler (a, 6) = IE.LocationURL ThisWorkbook.Kalkylblad (idex).Hyperlänkar.Lägg Till Dettaarbetsbok.Kalkylblad (idex).Celler (a, 6), Dettaarbetsbok.Kalkylblad (idex).Celler(a, 6) dvs.GoBack gör medan IE.Upptagen Ansökan.Vänta DateAdd ("s", 1, Nu) Loop a = a + 1 nästa jag slutar om ThisWorkbook.Spara nästa j Set IE = ingenting Set contactobj = ingenting nästa idex slutet Sub

den enda punkt som jag behöver förklara illustreras i Figur 3.2. En webb kan bara lista så många som 25 företag. När det totala antalet företag är större än 25 kommer det att finnas mer än en sida. Figur 3.2 visar att det finns en regel att få adressen till sidor efter den första sidan. Det är resultatet av den sammanlänkande adressen till den första sidan, ”&pg=” och det faktiska sidnumret. Och för alla sidor före den sista sidan är det totala objektnumret 25. ”IE.dokument.getElementsByClassName (”SearchTotal”) (0).innerHTML ” kan returnera det totala antalet företag inom en bransch. I vårt fall blir det 651. ”Int (tot / 25) + 1” kan få dig det totala antalet sidor. Och ”Max = (tot Mod 25) – 1” kan returnera det maximala antalet företag på sista sidan. Jag kommer att stanna här och lämna dig för att ta reda på hur du tillämpar den här tanken på koden. Det är ett mycket bättre tillvägagångssätt för dig att förstå kod. Du kan lämna en kommentar om du har frågor.

importera data från webben till Excel Fig 3.2

Figur 3.2

här visar du en del av den slutliga excel. Kontaktinformation för alla företag inom en bransch sammanställs i ett kalkylblad.

importera data från webben till Excel Fig 3.3

figur 3.3

  • hur extraherar du data från webbplats till Excel automatiskt?
  • importera Data (mening, stycken, tabeller, kommentarer) från Word till Excel
  • 6 Bästa Excel VBA – Programmeringsböcker (för nybörjare & avancerade användare)
  • lär dig Excel VBA-programmering & makron (gratis handledning-steg för steg)
  • Excel VBA-Kodningstips
  • vad du kan göra med VBA
  • introduktion till VBA-makron

ladda ner Arbetsfil

ladda ner arbetsfilen från länken nedan.

Pull-Data-från-Web-till-Excel.rar

Leave a Reply

Din e-postadress kommer inte publiceras.