![用VB实现“上网机器人”的技术_第1页](http://file2.renrendoc.com/fileroot_temp3/2021-11/29/779fc4de-4df7-441a-bb7e-08cb126b28fb/779fc4de-4df7-441a-bb7e-08cb126b28fb1.gif)
![用VB实现“上网机器人”的技术_第2页](http://file2.renrendoc.com/fileroot_temp3/2021-11/29/779fc4de-4df7-441a-bb7e-08cb126b28fb/779fc4de-4df7-441a-bb7e-08cb126b28fb2.gif)
![用VB实现“上网机器人”的技术_第3页](http://file2.renrendoc.com/fileroot_temp3/2021-11/29/779fc4de-4df7-441a-bb7e-08cb126b28fb/779fc4de-4df7-441a-bb7e-08cb126b28fb3.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、在大多数情况下,上网冲浪是件令人愉快的事情。但若是数百上千的超链接摆在你而前, 而你又不得不一一点击这些链接、进入相应的网页、手工筛选出每页里你需要的信息、最后 再将这些信息编进数据库中、.,你将做何感想?如果每天都从事这种繁杂、枯燥的工作会 不会让你发疯? “自动上网机器人”或许可救你出“苦海”:你可以喝着咖啡、听着音乐、 看着“机器人”辛勤地替你工作,那感觉是不是棒极了!本文结合实例详尽讨论了用VB实现“上网机器人”的技术细节。我们知道,搜集和下载 资料是人们使用互联网的最主要的目的之一,但有些信息资源过于庞大,用手工摘取的方法 是困难的或根本就是行不通的。例如,你需要搜集欧洲进口机械设备
2、的公司名录以便给他们 发信邀请其参加博览会,在网上找到这些信息并不难,但岀于数据安全等方而的考虑,几乎 所有提供类似信息的网站都没有提供直接下载数据的功能。要想搜集齐想要的数据,唯一可用的方法就是一页一页地浏览每个公司的信息页,摘取苴 中有用的数据并存入数据库。但当公司总数超过数千时,巨大的工作量会让任何人望而却步! 其实,这浩大的工作完全可以由程序来完成,因为这些任务完全是机械的重复性工作。而且, 用程序完成比用手工要快得多。本文涉及的技术细节是通用的,即对实例程序稍加修改就可 完成任何“自动上网冲浪”任务。自动拨号上网、自动处理中途掉线、任务完成后自动挂断,这些都是''上网
3、机器人”的最 基本的功能之一。它还能给你带来明显的经济回报:如果你让“机器人”在晚间至凌晨的上 网费优惠期内拨号上网去自动冲浪,那真可称得上是典型的“一石三鸟”-你睡觉、它工 作、还省钱!有关这方而的细宵将在本文的第三部分里讨论。该部分提供了实现上述各功能 的若干方法,并比较了这些方法各自的优劣。本文的第一和第二部分分别以两个实例讨论了自动浏览的技术细节:在网页上的输入区内 自动填入数据以便完成诸如用户登录等的操作、自动更新CheckBox.自动选择下拉式列表 (ComboBox)的值、自动点击网页上的按钮、从网页上精确提取有用的数据并存盘、将网 页上二维表(Table)内的数据一一提取出来并
4、转换且存储成可直接导入数据库或Excel的格 式,以及控制浏览进程的技巧等等。第一部分从网页上精确提取数据本部分的实例是:下载沪深两市全部约H00家个股的基本信息及财务数据。若用手工操 作,如上图所示,需要在股票代码区内分别输入1100个股票代码,在下拉式列表(ComboBox) 中分別选择“个股资料”和“财务数据解读”,算下来约是2200次操作!这样的工作当然 是由程序来完成划算得多。况且手工提取数拯(先选中、再使用Ctrl+C拷贝)极容易出错(多 选或漏选),又很费眼神。1. 在输入区内自动填入数据为使程序能髙效地自动浏览,需引入一些最基本的功能,如在输入区内自动填入数据、自 动点击按钮等
5、等。虽然用变换URL地址的方法有时也能完成任务,但往往过于费力,尤北 当网页上的输入区较多时更是如此。为了在输入区内输入数据,需要先搜索到该对象的名字,然后将该对象的值置为要填入的数 拯即可。搜索名字的工作可编程完成,亦可用Frontpage轻松获得。2. 自动在下拉式列表(ComboBox)中进行选择同样地,首先要获得下拉式列表的需字。然后根据下拉式列表的元素总数(length属性)在 列表中搜索要设置的值(列表的Options集合中元素的Text属性,找到后,将该元素设为选 中元素(元素的Selected属性)3. 自动点击按钮对于按钮来讲,可根据其名字访问,亦可根据其值访问。按钮的值就是
6、显示在按钮上的文字。 一个按钮可能没有名字,但一泄有值。本例的程序就是根据值来访问按钮。执行按钮的Click 方法就相当于点击了该按二中红色箭头所指即为程序自动填入输入框、自动在ComboBox 中选择以及自动点击按钮的情况。4. 精确提取数据仅将有用的数据存储下来才是有意义的。必须研究网页,找岀有效数据所在的Tag区(可用 文本编辑器或Frontpage),然后用该对象的innerText属性获得最终的文本。本例中要存储 的数据如下图所示,其所用的Tag为"PRE"。下而给岀的是实例程序的完整代码:程序一:从网页上精确提取数据为运行本程序,应在"菜单工程部件&q
7、uot;中添加"'Microsoft Internet Controls"'并在"菜单工程引用"中添力n/zMicrosoft HTML Object Library 为了简洁,程序仅下载九只个股的基本信息Option Explicit Private Const FormD = 1 Dim Cod&9) As StringDim Current As Long Private Sub Form_Load() Forml.MousePointer = 11 以下 是个股代码为 了 程序简洁,这里仅使用九只代码。而在真实环境中,应从
8、数据文件中读入全部个股代码。Code(O) = ,600001H: Code(l) = ”600002”: Code二 ”600003“Code=”600005": Code(4) = ,600006H: Code=”600007”Code(6) = ”600008”: Code(7) = ”600009”: Code=,600010MCurrent = 0WebBrowserl.Navigate "" 1起始网址End SubPrivate Sub WebBrowserl_DocumentComplete(ByValpDisp As Object, URL As
9、 Variant)Dim , k Text2 = WebBrowserl丄ocationURL '显示当前网址判断当前网页是否全部调入完毕if Not (pDisp Is WebBrowserl.Object) Then Exit SubOn Error Resume NextSelect Case Text2Case u当进入主页面时执行以下程序For i = 0 D).length 1找到代码输入框后填入个股代码D)(i)Name = "code” Then _D)(i)Value = Code(Current)在下拉式列表中进行选择D)(i)Name = "t
10、arget11 ThenD)(i)ength -1="个股资料11End If点击按钮 D)(i)Value ="査询Then _D)(i)ClickNextCase Else'当进入数据页而时执行以下程序For i = 0 -1精确提取数据 Textl = Textl + Code(Current) + vbCrLf + _+ vbCrLf Exit ForEnd If Next数据存盘Open ,C:Data2.Txt" For Append As #1Private IpcConnections As LongPrivate Declare Func
11、tion RasEnumConnections Lib,rasapi32.dir, Alias HRasEnumConnectionsA" (IprasconnAs Any, Ipcb As Long, IpcConnectJons As Long) As LongPrivate Declare Function RasGetConnectStatus Lib,rasapi32.dir, Alias ,RasGetConnectStatusAN (ByVai _ hRasConn As Long, IpRASCONNSTATUS As Any) As LongPrivate Decl
12、are Function RasHangUp Lib "rasapi32.dir,Alias "RasHangUpA'1 (ByVai hRasConn As Long) As Long有关/注册表的全局泄义Private Const HKEY_LOCAL_MACHINE = &H80000002Private Declare Function RegOpenKey Lib ”advapi32.dll” Alias "RegOpenKeyA11 (ByVai hKey As Long, ByVai IpSubKey As_ String, phkR
13、esult As Long) As LongPrivate Declare Function RegQueryValueEx Lib ,advapi32.dH"Alias "RegQueryValueExA" (By Vai hKey As Long, By Vai _ IpValueName As String, By Vai IpReserved As Long, IpType _ As Long, IpData As Any, IpcbData As Long) As Long Private Declare Function RegCloseKey Lib
14、 "advapi32.dll" _ (ByVai hKey As Long) As LongDim ret As Long自动拨号Private Sub wininet 拨号测试_Click()If lnternetAutodial(INTERNET_AUTODIAL_FORCE_UNATTENDED, 0)Then MsgBox 已连接( wininet 法)End SubPrivate Sub rnaui 拨号测试 _Click() ret = Shell("rundll32.exe rnaui.dllzRnaDial" + Textl, 1): D
15、oEventsSend Keys "enter'1, True: DoEventsEnd Sub检查是否断线Private Sub wininet方法_Click()1 wininet 法检查是否断线If lnternetGetConnectedState(INTERNET_CONNECTION_MODEM, 0) ThenMsgBox 在线.ElseMsgBox M 当前未连接。End IfEnd SubPrivate Sub査找窗口法_Click()1看找窗口法检查是否断线ret = FindWindow(,#32770,/重新连接n)If ret <> 0
16、ThenCall ShowWindowfret, SW_SHOW)Send Keys "enter'1, True: Exit SubEnd If ret= FindWindow,#32770,/ 连接到The95963")If ret <> 0 ThenMsgBox 在线.ElseMsgBox H 当前未连接。End IfEnd SubPrivate Sub RAS 方法_Click()1 RAS方法检查是否断线Ras_Buf(O).dwSize = Len(Ras_Buf(O) + 1Ipcb = 256 * Ras_Buf(O).dwSize re
17、t = RasEnumConnections(Ras_Buf(O), Ipcb, IpcConnections)If ret ThenMsgBox H 出错!Exit SubEnd IfRas_Status.dwSize = Len(Ras_Status) + 2 ret = RasGetConnectStatusfRasBuffOj.hRasConn, Ras_Status)If ret = 0 And Ras_Status.RasConnState = RASCS_DONE ThenMsgBox 在线.ElseMsgBox M 当前未连接。End IfEnd SubPrivate Sub注
18、册表法_Click()1注册表法检查是否断线Dim SubKey As String, ValueName As StringDim Data As Long, Result As LongSubKey = HSystemCurre ntCon trolSetServicesRemoteAccessu ret = RegOpenKeyfHKEYLOCALMACHINE, SubKey, Result)If ret = 0& ThenValueName = ''Remote Connection" ret = RegQue ry Va I ue Ex( Re s
19、u It, ValueName, 0&, 0&, By Vai Data, 0&) ret = RegQueryValueExfResult, ValueName, 0&, 0&, Data, Len(Data)If ret = 0& And Data <> 0 ThenMsgBox 在线!ElseMsgBox M 当前未连接。End IfRegCloseKey (Result)End IfEnd Sub自动挂断Private Sub wininet 法_Click()1 wininet 狂自动挂断If InternetAutodialHangup(O) Then MsgBox 已挂断( wini
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 办学担保合同范本
- 农村房屋购销合同范本
- 人工测试合同范例
- 保温涂料施工合同范本
- 出租空地合租大棚合同范本
- 兵役登记合同范例
- 产品摄影合同范例
- pc总包合同范本
- 2025年工业厂房合同转让与土地储备及开发协议
- 临夏求购路灯合同范本
- 房车露营地的研究课件
- 园艺疗法共课件
- DB33T 628.1-2021 交通建设工程工程量清单计价规范 第1部分:公路工程
- 医院-9S管理共88张课件
- 设立登记通知书
- 2022医学课件前列腺炎指南模板
- MySQL数据库项目式教程完整版课件全书电子教案教材课件(完整)
- 药品生产质量管理工程完整版课件
- 《网络服务器搭建、配置与管理-Linux(RHEL8、CentOS8)(微课版)(第4版)》全册电子教案
- 职业卫生教学课件生物性有害因素所致职业性损害
- 降“四高”健康教育课件
评论
0/150
提交评论