Excel 希望狼版主教教我们读取网页数据方面的知识.doc

上传人:hw****26 文档编号:3149848 上传时间:2019-05-23 格式:DOC 页数:16 大小:70.50KB
下载 相关 举报
Excel 希望狼版主教教我们读取网页数据方面的知识.doc_第1页
第1页 / 共16页
Excel 希望狼版主教教我们读取网页数据方面的知识.doc_第2页
第2页 / 共16页
Excel 希望狼版主教教我们读取网页数据方面的知识.doc_第3页
第3页 / 共16页
Excel 希望狼版主教教我们读取网页数据方面的知识.doc_第4页
第4页 / 共16页
Excel 希望狼版主教教我们读取网页数据方面的知识.doc_第5页
第5页 / 共16页
点击查看更多>>
资源描述

1、我收集的资料,供你参考近期写了一段程序:从网上下载数据,写入数据库,查询、分析、打印。找了很多的资料,现作一回顾总结,本篇主要写网页数据下载与控制。 (以下均为本人的一些心得,写的不对的,请各位师傅指正。希望本文能对和我一样菜的朋友有一些帮助。 )一、概述及感谢二、Maxthon 的使用三、网页关键字(录入、按钮、数据)解读四、POST 、GET 与 NAME、VALUE五、使用 WebBrowser六、使用 IE七、查询结果是新弹出窗口的控制八、使用 POST 方法九、使用 EXCEL 获取网页数据十、例:利用 webbrowser 获得网页数据附件一、XmlHttp 对象用法示例与说明一、

2、概述及感谢需要用到网页控制的方面,大致概括一下为:1、程序中需要嵌入一个网页,例如:天气预报。2、需要从网上下载数据,写入到本地数据库中。特别需要感谢 Winland 对我的指导。二、Maxthon 的使用无论哪方面的应用,首要的是找到网址(也许是废话) 。以 Winland 的天气预报为例,假如我的程序需要这样一个东西,我该如何下爪:1、打开 http:/ ,打开:http:/ Maxthon 的 viewpage。5、在“框架”中,发现一个“内嵌框架” ,点击打开。发现原来天气预报的网址为:http:/ Maxthon,我们可以很方便地找到我们所需要的真正的网址。在 viewpage 中还

3、有一个“表单” ,里面很清楚地显示了 Name,method,以及 Action。我理解这个 Action 就是“结果网页”的网址的后半部分(不知对不对?) 。(在网页的表单里面 Action 是目标地址,就是处理这些递交内容的服务器端脚本。 如果Action 为空的话,就是当前文件。 )三、网页关键字(录入、按钮、数据)解读ASP 脚本片断的开始和结束。在标签之间的脚本代码,在主页传递给用户浏览器之前 会在服务器上执行。和 标示网页的开头,标示网页的结束。和 网页上的文本应该放置在这些标示之间和 表格的开始和结束表格边框参数明确表格边框的宽度和 放置表格标题于这些标示之间和 标示在表格里开始

4、一新行。表格中每行以标示结束。和 使用这些标示来明确表格单元格。每个单元格以 标示开始,以标示结束。表格单元格可以包含任何内容,包括另一个表格。我们需要重点关注的就是: 和 , 和 以及 和 。文本框:,有的省略了TYPE,VALUE 及 SIZE,但应该是有关键字 INPUT 及 NAME。选择框:EUR Euro 当前值USD United States DollarsCAD Canada Dollars单选钮:升序 当前选择降序按健:(winland 注解:这个地方建议写的详细一点,先介绍一下简单的 HTML 文档格式,再说说 Document Object Model,这个对下面的内容

5、更有帮助。 ) (查了一下关于 DOM 的内容,大致看了一下,好像很复杂,也没有一个介绍的比较系统的,所以,暂时写不出来。 )四、POST 、GET 与 NAME、VALUE为了从网页获取数据,需要明确参数。要在网络查询里,向网络服务器发送参数的话,那么需要在核实某个具体网络服务器使用哪种方法后,使用 POST 或者 GET 方法。打开源码,查找“POST” ,如果给网络服务器发送参数使用的是 POST 方法,那么文本POST 就应该出现。如果网络服务器使用 GET 方法接收参数的话,那么可以在浏览器地址栏里看到该参数名称和值。例如:http:/www.nycenet.edu/dist_sch

6、/sch/searchresult/asp?boro=Manhattan “)End Function、如果你所需要的网页网址中带有?,但取值规则不清楚,比如用一长串数值代替,则需要从上一级开始查起,我们估且称之为“查询网页”和“结果网页” 。通过分析“查询网页”使用程序自动输入、选择、点击,或用户使用时输入、选择、点击,打开“结果网页” 。但此时就存在一个问题:“结果网页”是在新窗口中打开的,并没有显示在 WebBrowser1中!这时候,我们从下面的几种方法中找到一种适合于自己的:(具体见后)、 “遍历已打开的 IE 窗口” ,找到“结果网页” ,读网址、关闭网页,使用 EXCEL 的“获

7、取外部数据”将网页内容读到 EXCEL 中。、 “遍历已打开的 IE 窗口” ,找到“结果网页”的 hwnd(句柄) ,置为当前,然后模拟鼠标点击一下,再 sendkey:全选、复制、关闭网页,最后在 EXCEL 中粘贴。、 “遍历已打开的 IE 窗口” ,找到“结果网页” ,恢复对 IE 的控制,读 innerhtml,分析innerhtml。、强制新窗口也在 WebBrowser1 中显示,不另开 IE 或 Maxthon,读 innerhtml,分析innerhtml。、使用 POST 方法(winland 提供) 。、使用 EXCEL 的 POST 方法。、如果你所需要的网页网址中没有

8、?,无论你的查询条件是什么, “结果网页”的网址都不变,此时,如果直接在 IE 中输入该地址,则什么也得不到。对于这类网页也只能从上一级开始查起,同上。(我刚完成的这个程序就属于这类,使用 winland 提供的 POST 方法都不行,最后使用EXCEL 的 POST 方法完成)六、使用 IE 1、如果不想使用 WebBrowser,而想使用 Internet Explorer,或者“结果网页”是新窗口而“被迫”使用,控制起来也还比较方便。Dim IEPL As ObjectSet IEPL = CreateObject(“InternetExplorer.Application“)IEPL.

9、Visible = False 隐藏打开网页URLstr=”http:/www.xxx.xxx/”IEPL.Navigate URLstr与 webbrowser 一样,当页面调用完毕时,发生 DocumentComplete 事件。读 InnerhtmlIEPL.Quit 关闭或:Shell (“C:Program FilesInternet ExplorerIEXPLORE.exe about:blank“)遍历已打开的 IE 窗口,通过窗口标题找到刚才打开的 IE(或“结果网页”新窗口) ,恢复对 IE 的控制。遍历已打开的 IE 窗口Dim dWinFolder As New Shel

10、lWindowsDim objIE As ObjectDim Czpmxurl As String, Czpmxname As String For Each objIE In dWinFolderCzpmxname = objIE.LocationName 标题If InStr(Czpmxname, “查询结果“) ThenZdurl = TrueEnd IfNextIf Zdurl then 找到了objIE.application.Visible = False 隐藏Czpmxurl = objIE.LocationURL 网址读 Innerhtmlend ifobjIE.applica

11、tion.Quit 关闭2、如果“结果网页”新窗口不是 IE,而是 Maxthon,则要麻烦一些,上面提到的隐藏和关闭方法对 Maxthon 分别无效和出错,其它控制方法倒是一样。此时要关闭 Maxthon,则要使用 sendkey Alt+F4 的方法了。当然,也可以通过修改注册表,将 IE 设置为默认。七、查询结果是新弹出窗口的控制当查询结果是新弹出窗口,前面已谈到 IE 控制,下面再谈两种方法:1、例:通过窗口标题,找到“结果网页”的 hwnd(句柄) ,置为当前,然后模拟鼠标点击一下,再 sendkey:全选、复制、关闭网页,最后在 EXCEL 中粘贴。定义 API 函数Declare

12、 Function FindWindow Lib “user32“ Alias “FindWindowA“ (ByVal lpClassName As String, ByVal lpWindowName As String) As LongDeclare Sub Sleep Lib “kernel32“ (ByVal dwMilliseconds As Long)Declare Function SetForegroundWindow Lib “user32“ (ByVal hwnd As Long) As LongDeclare Function ClientToScreen Lib “u

13、ser32“ (ByVal hwnd As Long, lpPoint As POINTAPI) As LongType POINTAPIx As Longy As LongEnd TypeDeclare Function GetSystemMetrics Lib “user32“ (ByVal nIndex As Long) As LongPublic Const SM_CXSCREEN = 0Public Const SM_CYSCREEN = 1Declare Sub mouse_event Lib “user32“ (ByVal dwFlags As Long, ByVal dx As

14、 Long, ByVal dy As Long, ByVal cButtons As Long, ByVal dwExtraInfo As Long)Public Const MOUSEEVENTF_MOVE = http:/xxx.xx.xx/“ With ActiveSheet.QueryTables.Add(Connection:=Weburl, http:/10.228.98.9/eventresult.php“Strpost =“year_start=%202007&month_start=%205&date_start=%2012&“ & _“hour_start=%200“ &

15、_“&year_end=%202007&month_end=%205&date_end=%2013&hour_end=%200“ & _“&substation%5B%5D=00&R1=sortall&order=1&desckey=“With Exsheet.QueryTables.Add(Connection:=weburl, & _Destination:=Exsheet.Range(“a1“).PostText = Strpost post 字串.BackgroundQuery = True.WebSelectionType = xlSpecifiedTables.WebTables

16、= “1“ 导入网页中的第一个表,也只有一个表格,网页上可能会包含很多个表格,表格让你组织网页内容。当在记事本里查看 HTML 源代码时,你会发现通过下述标签你很容易识别这些表格:(表格开始)和 (表格结束).WebFormatting = xlWebFormattingAll.RefreshStyle = xlOverwriteCells.AdjustColumnWidth = TrueOn Error GoTo Wlcw.Refresh BackgroundQuery:=False 发送命令?On Error GoTo 0.SaveData = TrueEnd With数据已写入到 EXCEL

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 重点行业资料库 > 建筑建材

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。