Excel怎么抓取網(wǎng)絡(luò)數(shù)據(jù)?
網(wǎng)友解答: Excel抓取并查詢網(wǎng)絡(luò)數(shù)據(jù)可以使用“獲取和轉(zhuǎn)換”+“查找引用函數(shù)”的功能組合來(lái)實(shí)現(xiàn)。例:下圖是百度百科“奧運(yùn)會(huì)”網(wǎng)頁(yè)中的一個(gè)表格,我們以此為例實(shí)現(xiàn)抓取該表格至Excel中,
Excel抓取并查詢網(wǎng)絡(luò)數(shù)據(jù)可以使用“獲取和轉(zhuǎn)換”+“查找引用函數(shù)”的功能組合來(lái)實(shí)現(xiàn)。
例:下圖是百度百科“奧運(yùn)會(huì)”網(wǎng)頁(yè)中的一個(gè)表格,我們以此為例實(shí)現(xiàn)抓取該表格至Excel中,并且能夠通過(guò)輸入第幾屆來(lái)查詢對(duì)應(yīng)的舉辦城市。
Step1:使用“獲取和轉(zhuǎn)換”功能將網(wǎng)絡(luò)數(shù)據(jù)抓取至Excel中依次點(diǎn)擊“數(shù)據(jù)選項(xiàng)卡”、“新建查詢”、“從其他源”、“從Web”。
彈出如下窗口,手動(dòng)將百度百科“奧運(yùn)會(huì)”的網(wǎng)址復(fù)制粘入U(xiǎn)RL欄,并點(diǎn)擊確定。
Excel與網(wǎng)頁(yè)連接需要一定時(shí)間,稍等片刻后會(huì)彈出如下窗口,左邊列表中的每個(gè)Table都代表該網(wǎng)頁(yè)中的一個(gè)表格,挨個(gè)點(diǎn)擊預(yù)覽后發(fā)現(xiàn),Table3是我們所需的數(shù)據(jù)。
點(diǎn)開(kāi)下方的“加載”旁邊的下拉箭頭,選擇“加載到”。
在彈出的窗口中,在“選擇想要在工作薄中查看此數(shù)據(jù)的方式”下選擇“表”,并點(diǎn)擊加載。
如圖,網(wǎng)頁(yè)表格中的數(shù)據(jù)已被抓取至Excel中。
依次點(diǎn)擊“表格工具”、“設(shè)計(jì)”,將“表名稱”改為奧運(yùn)會(huì)。
Step2:使用“查找與引用”函數(shù)實(shí)現(xiàn)數(shù)據(jù)查詢建立查詢區(qū)域,包含“屆數(shù)”和“主辦城市”,在屆數(shù)中隨意選取一屆輸入,下圖輸入“第08屆”,在主辦城市下輸入vlookup函數(shù),可以得到第08屆奧運(yùn)會(huì)的主辦城市是巴黎,當(dāng)更改屆數(shù)時(shí),對(duì)應(yīng)的主辦城市也隨之變動(dòng)。
公式:=VLOOKUP([屆數(shù)],奧運(yùn)會(huì)[#全部],4,0)
注意點(diǎn):若網(wǎng)頁(yè)中的數(shù)據(jù)變動(dòng)較頻繁,則可以設(shè)置鏈接網(wǎng)頁(yè)的數(shù)據(jù)定時(shí)刷新:
①將鼠標(biāo)定位于導(dǎo)入的數(shù)據(jù)區(qū)域中,切換到【設(shè)計(jì)】選項(xiàng)卡,點(diǎn)擊【刷新】下拉箭頭→【鏈接屬性】
②在彈出的【鏈接屬性】對(duì)話框中,設(shè)置【刷新頻率】,比如設(shè)置為10分鐘進(jìn)行刷新。這樣,每隔10分鐘數(shù)據(jù)就會(huì)刷新一次,時(shí)刻保證獲取的數(shù)據(jù)位最新的。
「精進(jìn)Excel」系酷米簽約作者,關(guān)注我,如果任意點(diǎn)開(kāi)三篇文章,沒(méi)有你想要的知識(shí),算我耍流氓! 網(wǎng)友解答:
大家好,我是@Excel實(shí)例視頻網(wǎng)站長(zhǎng)@歡迎私信或者邀請(qǐng)我回答Excel相關(guān)問(wèn)題!
有人在群里問(wèn)手機(jī)號(hào)怎么批量查歸屬地,第一感覺(jué)是百度一下,結(jié)果還真沒(méi)找到好用的,既然如此,我就自己寫(xiě)一個(gè)吧!首先找了幾個(gè)webapi,找到個(gè)挺好用的,就用vba寫(xiě)了個(gè)自定義函數(shù),測(cè)試下感覺(jué)還是挺好用,速度也挺快
源文件下載鏈接請(qǐng)私信回復(fù)63005即可使用方法:
1.在本表中直接在A1列輸入手機(jī)號(hào)即可
2.要在其他表中,alt+f11打開(kāi)vbe編輯器,復(fù)制模塊中代碼,在你的新表中建立模塊,粘貼代碼即可
3.函數(shù)參數(shù)說(shuō)明
GetPhoneInfo(號(hào)碼,參數(shù))
號(hào)碼—即單個(gè)手機(jī)號(hào)
參數(shù)(1,2,3,4):1-城市,2-省,3-運(yùn)營(yíng)商, 4-全部
代碼如下
Dim ObjXML As Object
Function GetPhoneInfo(number, Optional para As Byte = 1)
'獲取手機(jī)號(hào)對(duì)應(yīng)的基本信息 默認(rèn)為城市
'para:1-城市,2-省,3-運(yùn)營(yíng)商,4,全部
Dim s As String
s = GetBody("http://v.showji.com/Locating/showji.com2016234999234.aspx?output=json&callback=querycallback&m=" & number)
Select Case para
Case 1
GetPhoneInfo = HtmlFilter(s, "City"":""", """")
Case 2
GetPhoneInfo = HtmlFilter(s, "Province"":""", """")
Case 3
GetPhoneInfo = HtmlFilter(s, "TO"":""", """")
Case 4
GetPhoneInfo = HtmlFilter(s, "City"":""", """") & "," & HtmlFilter(s, "Province"":""", """") & "," & HtmlFilter(s, "TO"":""", """")
End Select
GetPhoneInfo = Replace(GetPhoneInfo, " ", "")
End Function
Private Sub Test()
Dim i&, j&, k&, arr, brr
url = "http://v.showji.com/Locating/showji.com2016234999234.aspx?output=json&callback=querycallback&m=15698151655"
Debug.Print GetBody(url)
End Sub
'''如果出現(xiàn)亂碼,UTF-8可改為GB2312
Public Function GetBody(ByVal url$, Optional ByVal Coding$ = "utf-8")
On Error Resume Next
Set ObjXML = CreateObject("Microsoft.XMLHTTP")
With ObjXML
.Open "Get", url, False, "", ""
'.setRequestHeader "If-Modified-Since", "0"
'.setRequestHeader "User-Agent", _
".Mozilla/5.0 (Windows NT 6.1; WOW64; rv:47.0) Gecko/20100101 Firefox/47.0"
.Send
GetBody = .ResponseBody
End With
GetBody = BytesToBstr(GetBody, Coding)
Set ObjXML = Nothing
End Function
Public Function BytesToBstr(strBody, CodeBase)
Dim ObjStream
Set ObjStream = CreateObject("Adodb.Stream")
With ObjStream
.Type = 1: .Mode = 3: .Open:
.Write strBody: .Position = 0: .Type = 2: .Charset = CodeBase
BytesToBstr = .ReadText: .Close
End With
Set ObjStream = Nothing
End Function
Public Function HtmlFilter(ByVal htmlText$, ByVal Label1$, ByVal label2$)
'返回html字符串lable1和最近的lable2標(biāo)簽中的數(shù)據(jù)
Dim pStart As Long, pStop As Long
pStart = InStr(htmlText, Label1) + Len(Label1)
If pStart < 0 Then
pStop = InStr(pStart, htmlText, label2)
HtmlFilter = Mid(htmlText, pStart, pStop - pStart)
End If
End Function