今天小雅問(wèn)小采一個(gè)問(wèn)題,怎樣批量查詢(xún)采集手機(jī)號(hào)碼歸屬地?
小采的第一想法是用火車(chē)采集器啊,無(wú)需復(fù)雜編程即可輕松采集。
然而小雅雞賊的加了個(gè)限制,不準(zhǔn)用火車(chē)頭,emmm,這下有點(diǎn)麻煩了,除了火車(chē)頭還有什么別的辦法可以查詢(xún)呢?
1
今天小采就教大家一個(gè)簡(jiǎn)單實(shí)用的小技巧。
?首先,我們用隨機(jī)函數(shù),生成一批手機(jī)號(hào)碼,在Excel中模擬,使用函數(shù)=RANDBETWEEN(13000000000,13999999999),生成了一批手機(jī)號(hào)碼,如下所示:
?如果我們一個(gè)個(gè)查詢(xún),只能去網(wǎng)站上面輸入手機(jī)號(hào),然后得到相應(yīng)的結(jié)果。我們記住網(wǎng)站,然后后面用函數(shù)進(jìn)行抓取。
?我們首先建議一個(gè)輔助列,得到查詢(xún)這個(gè)手機(jī)號(hào)的網(wǎng)頁(yè)鏈接地址,在B2輸入公式:="https://shouji.51240.com/"&A2&"__shouji/",批量得到鏈接地址,如下所示:
然后再使用函數(shù),從網(wǎng)頁(yè)中抓取數(shù)據(jù),并剔除一些沒(méi)有用的字符串,大家可以看下面截圖中的公式使用,如下所示:
便可以得到是哪個(gè)運(yùn)營(yíng)商,以及該手機(jī)號(hào)碼對(duì)應(yīng)的省份和城市。
如果不理解公式的話(huà),就直接按照上面的步驟操作就好了。這個(gè)功能要聯(lián)網(wǎng)才能實(shí)現(xiàn),在Excel打開(kāi)的時(shí)候,要點(diǎn)擊允許連接網(wǎng)絡(luò)。
2
或者還有一種方法,那就是自己來(lái)寫(xiě)代碼。首先你要找好幾個(gè)webapi,然后就用vba寫(xiě)自定義函數(shù),測(cè)試下運(yùn)行還是很正常的。
使用方法具體如下:
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-全部
部分代碼如下:
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=15098051755"
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
3
本周的每周一數(shù)小采為大家?guī)?lái)的就是28萬(wàn)手機(jī)號(hào)碼歸屬地?cái)?shù)據(jù)。
活動(dòng)領(lǐng)取資格:火車(chē)采集器/火車(chē)瀏覽器商業(yè)版(服務(wù)年限內(nèi))用戶(hù)。領(lǐng)取時(shí)間:發(fā)文后5個(gè)工作日內(nèi)(周末工作人員休息)。值得注意的一點(diǎn)是,如果不是服務(wù)年限內(nèi)的商業(yè)版用戶(hù)就無(wú)法領(lǐng)取贈(zèng)送數(shù)據(jù)哦!
贈(zèng)送數(shù)據(jù)字段名:包含ID,手機(jī)號(hào),區(qū)域,城市,移動(dòng)運(yùn)營(yíng)商,區(qū)號(hào),郵編共7個(gè)字段名。
贈(zèng)送數(shù)據(jù)領(lǐng)取時(shí)間:2019年3月15日發(fā)文后5個(gè)工作日內(nèi)。
贈(zèng)送數(shù)據(jù)領(lǐng)取方式:
第一步:掃碼添加火車(chē)運(yùn)營(yíng)微信,運(yùn)營(yíng)會(huì)第一時(shí)間拉你進(jìn)福利分享群,趕快來(lái)和商業(yè)用戶(hù)的大神們一起暢聊吧。
第二步:進(jìn)群后加數(shù)據(jù)咨詢(xún)客服.雅的微信號(hào),驗(yàn)證是否服務(wù)年限內(nèi)商業(yè)用戶(hù),通過(guò)驗(yàn)證后即可領(lǐng)取今日頭條大數(shù)據(jù)。
如果你還知曉更多采集查詢(xún)手機(jī)號(hào)歸屬地的方法,也可以在公眾號(hào)下方留言分享哦。