时间:2022-08-11 09:03:29
摘 要 随着信息时代的到来, 短信作为一种灵活方便主动的沟通方式,引起了人们越来越多的重视。短信通知、短信广告、短信提醒等业务在各个领域中都得到广泛的应用。本文介绍了Excel VBA利用网页数据抓取技术并借助飞信平台实现用户与手机对象之间的短信通信。
关键字 Excel;VBA ;网页数据抓取;手机短信通信;信息群发
中图分类号TN91 文献标识码A 文章编号 1674-6708(2013)100-0212-02
0引言
随着信息时代的到来,手机已成为人们不可或缺的通讯设备。手机短信作为一种使用方便、廉价的通信手段赢得了广大手机用户的钟爱。同时,短信应用的范围也逐渐由用户间一对一的单向交流向企业、银行、证券、交通、教育等应用领域扩展,成为企事业单位不可或缺的内部办公、客户服务和主动营销工具。许多企事业单位在考虑建立自己的短信应用平台,希望通过简单的操作实现短信群发,内容可以包括:会议通知,工资明细,广告宣传,温馨提示,短信留言等等。
本文介绍的手机信息通信系统使用Excel VBA进行开发,利用网页数据抓取技术并借助飞信平台实现用户与手机对象之间的短信通信.用户只需在操作系统中安装Microsoft Office并与互联网连接,即可实现手机短信即时或定时、定量地向特定的用户群发。
1 系统需求分析
需求分析
1)使用Excel工作表制作通讯录,记录客户的各项基本信息,如:所属关系,姓名,固定电话,传真号码,移动手机号码,信息内容等等;
2)发送信息,包括发送飞信信息和普通短信两种。飞信信息仅面向飞信好友,免费发送,而普通短信面向所有移动手机用户,信息按移动通信业务标准以0.1元/条发送;
3)操作员可根据通讯录选择号码实现飞信信息和普通短信的群发;
4)操作员可在信息操作面板中实现批量添加飞信好友;
5)系统可以通过预设时间定时发送信息,并记录信息的发送状态和信息内容。
短信群发是本系统中最重要的功能,在图2所示的操作面板中操作员通过输入飞信注册的手机账号和密码,自己的称呼,选择接收对象,在视图列表中勾选发送的用户对象并在信息内容文本框内编辑信息,可选择性的添加“日常问候”或“插入脚注”,根据需要勾选是否“定时发送”,点击“发送飞信”或“发送短信”即可。
系统关键技术:
1)使用Firebug抓取分析JS生成的页面数据
Firebug是Firefox下的一款开发类插件,它集HTML查看和编辑、Javascript控制台、网络状况监视器于一体,是开发JavaScript、CSS、HTML和 Ajax的得力助手。Firebug可以从各个不同的角度剖析Web页面内部的细节信息。
由于web飞信平台使用.NET技术开发,同时使用了AJAX技术,实现异步Http请求对网页的加载,使Web页面不用打断交互流程进行重新加裁,就可以动态地更新。这样不仅隐藏了页面间信息参数传递的细节,甚至可以将信息处理页面的相关信息也隐藏起来,平台自身的安全性得以提高,同时也为我们系统开发带来了障碍,借助Firebug,我们就可以在控制台里看到每一个XMLHttpRequests请求post出去的参数、URL,http头以及回馈的内容,甚至可以查看到每一个变量的内容,给我们的信息分析和处理提供了极大的便利和支持。
下面以web飞信平台中添加飞信好友为例,用Firebug获取到的信息如下:
这样我们就获得了当前页面提交的各项参数、参考值以及下一个处理页面的地址信息,为我们下一步编写程序提供了重要依据。
2)使用XmlHttp获取网页内容
XmlHttp是一套可以在Javascript、VbScript脚本语言中通过http协议传送或接收XML及其他数据的一套API。客户端通过XmlHttp对象(MSXML2.XMLHTTP.3.0)向http服务器发送请求并使用微软XML文档对象模型Microsoft? XML Document Object Model (DOM)处理回应。该对象完全集成了Microsoft XML Core Services (MSXML),支持直接发送请求,并用MSXML DOM分析响应。由于集成了对Extensible Stylesheet Language (XSL)的支持,MLHTT对象组件提供一个很简易的途径向HTTP服务器发送一个结构化查询,并支持用多种形式有效显示结果。通常的使用顺序是,先用open 方法,再用send方法发送请求,然后用setRequestHeader方法设置自定义头信息,最后查看四种以不同形式返回的响应结果。现在几乎所有的浏览器都增加了对XmlHttp的支持,IE中使用ActiveXObject方式创建XmlHttp对象,其他浏览器如:Firefox、Opera等通过window.XMLHttpRequest来创建XmlHttp对象。
系统主要功能实现程序:
短信发送是本系统最重要的功能,包括发送飞信信息和普通短信两种。在程序实现上两者并没有太大的差异,下面以通用性更强的发送普通短信功能为例,其部分核心程序代码如下:
1)【信息操作面板】中发送短信按钮执行程序
CMB_SendShortMsg()
Dim Msg As New VBAFetion
……
FUserN = CmbBox_UserN.Text ‘飞信手机账号
FUPass = TxtBox_UPass.Text ‘飞信密码
If Msg.Init(FUserN, FUPass) Then
Application.ScreenUpdating = False
Dim y2 As Long
For y2 = y To 1 Step -1
With ListView1.ListItems(y2)
If .Checked = True Then
HM = .SubItems(5)‘从ListView中获取客户姓名
NR = TextBox2.Text & IIf(ComboBox4.Text = “无”, "", ComboBox4.Text)‘往信息内容中插入脚注
.Text = IIf(Msg.SendShortMsg(HM, NR) = True, “短信已发送成功”, “短信发送失败”)
End If
End With
Next
Set Msg = Nothing
Application.ScreenUpdating = True
……
End Sub
2)VBA类模块中【VBAFetion】类的主要执行程序
Private Sub Class_Initialize()
Set http = CreateObject(“Microsoft.XMLHTTP”)‘创建对象
End Sub
Private Sub Class_Terminate()
Call Logout
Set http = Nothing‘终结对象
End Sub
Public Function SendShortMsg(mobile, message) ‘方法:发送普通短信
‘mobile 接收用户手机号码
‘message 发送信息的内容
Dim checkstate
If message = "" Then Exit Function
url = "/WebIM/SendDirectSMSHttpHandler.aspx?Version=" & CStr(num_i + 17)
num_i = num_i + 1
data = "UserName=" & myself & "&msg=" & encodeURI(message) & "&receivers=" & encodeURI(mobile) & "&type=1&ssid=" & ckvalue
If mobile = m_mobile Then
Send = ToMyself(message) ‘把信息发给自己
Else
checkstate = Post(url, data)
End If
‘判断短信是否发送成功
If InStr(checkstate, Chr(34) & "rc" & Chr(34) & ":280") > 0 Then
SendShortMsg = True
Else
SendShortMsg = False
End If
End Function
Private Function Post(url, data)’方法:与飞信平台进行交互
url = "https://" & url
http.Open "POST", url, False
http.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
http.Send data
Post = http.responsetext
End Function
2结论
本系统使用Excel VBA借助飞信平台发送信息,功能实用却是一把双刃剑。一方面,一键群发,一键定时发送,简单易用,可扩展性强,飞信信息免费发,普通短信0.1元/条,成本低,非常适用于短信通知、短信广告、短信提醒等需要和大批量用户进行联系的业务。另一方面,信息群发用之过度会造成各种垃圾广告信息的泛滥,给用户造成不必要的麻烦和骚扰,用之不当会造成各种造谣诈骗信息满天飞,给用户造成恐慌甚至经济损失。
参考文献
[1]Excel Home.别怕,Excel VBA其实很简单.人民邮电出版社.
[2]伍远高.Excel VBA开发技术大全.清华大学出版社.
[3]朱先忠.全面剖析XMLHttpRequest对象[EB/OL].