【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协议实现邮件轨迹跟踪查询

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