【VBA研究】關於XMLHTTP的Get和Post功能抓取數據

作者:iamlaosong

我前一陣子用VBA做了兩個工具,用XMLHTTP的Get功能和Post功能抓取網頁數據,還用這個對象的Get功能通過HTTP接口獲取數據,這兒總結一下:

1、Get功能抓取網頁數據,參數名稱和值放在鏈接之中,方法如下:通過不同的變量值(sn和en)構造不同的鏈接,獲取不同的數據。

hp1 = "http://api.map.baidu.com/?qt=nav&c=1&sn=2$$$$$$"
hp2 = "$$$$&sy=0&ie=utf-8&oue=1&fromproduct=jsapi&res=api&callback=BMap._rd._cbk92197"
http = hp1 & sn & "$$$$&en=2$$$$$$" & en & hp2

xh.Open "get", http
xh.send
rt = xh.responseText

通過不同的變量值(sn和en)構造不同的鏈接,獲取不同的數據。

參見:【VBA研究】用XMLHTTP的Get功能通過百度接口抓取城市間距離

2、Post功能抓取網頁數據,鏈接參數名稱和值放在變量之中,代碼如下:通過發送不同的變量值(pdata)獲取不同的數據。

http = "http://10.xxx.xxx.xxx/querypush-traln/qps/qpswaybilltraceinternal/queryTraceByTrace_no/"
pdata = "trace_no=1044905987232"
HttpReq.Open "Post", http, False

HttpReq.setRequestHeader "Content-Length", Len(pdata)
HttpReq.setRequestHeader "CONTENT-TYPE", "application/x-www-form-urlencoded; charset=utf-8"

HttpReq.send pdata
Debug.Print HttpReq.responseText

通過發送不同的變量值(pdatan),獲取不同的數據。

參見:【VBA研究】用XMLHTTP的Post功能抓取數據

3、Get功能從HTTP接口獲取數據,接口通過請求包頭參數實現授權和接口版本,代碼如下:

HttpReq.Open "Get", "http:// IP:Port/invoke/path/" & LTrim(mail), False
'下面的驗證屬性參數pppppppp1,2換成真實的屬性值,通過這個參數實現授權和版本
HttpReq.setRequestHeader "Authenticate", "pppppppp1"
HttpReq.setRequestHeader "Version", "pppppppp2"

HttpReq.send
MsgBox HttpReq.responseText

通過不同的變量值(mail)構造不同的鏈接,獲取不同的數據。

HTTP接口和網頁抓取是一樣的,因爲網頁也是這個協議。

參見:【VBA研究】VBA通過HTTP協議實現郵件軌跡跟蹤查詢

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章