作者:iamlaosong
我前一阵子用VBA做了个工具,用XMLHTTP的Get功能抓取城市间距离。现在我想用用XMLHTTP的Post功能抓取邮件轨迹。抓取数据是用Get还是Post,取决于网站提交参数的方法。
1、通过分析(用fiddler),邮件轨迹查询网站是用post提交参数的。如下图:

上图中“Entity”内容用于设置包头,点击“TextView”可以看到传输的参数内容,邮件号码,如下图:

抓取数据的代码如下:
Sub tt()
Dim HttpReq As Object
Dim pdata, http As String
Set HttpReq = CreateObject("MSXML2.XMLHTTP.6.0")
'轨迹头部数据,网址用xxx屏蔽
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"
HttpReq.setRequestHeader "CONTENT-TYPE", "application/x-www-form-urlencoded; charset=utf-8"
HttpReq.send pdata '"trace_nos=1194359346482"
Do Until HttpReq.readyState = 4
DoEvents
Loop
If HttpReq.Status = 200 Then
Debug.Print HttpReq.responseText
End If
End Sub
2、返回内容是个json结构的数

本文介绍了如何使用VBA结合XMLHTTP的Post功能来抓取邮件轨迹数据。作者通过分析并利用Fiddler工具,发现邮件轨迹查询网站采用POST方式提交参数。在VBA代码中,抓取到的返回内容是一个JSON结构,需要进行特定的处理才能成功解析。最终,作者给出了完整的VBA代码实现这一功能。

4221

被折叠的 条评论
为什么被折叠?



