VBA提取网页数据的四种方法.docVIP

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
VBA提取网页数据的四种方法.doc

VBA提取网页数据的四种方法 [复制链接] uranus1997 165 主题 0 好友 261 积分 幼儿园大班 喵~~~ [] 金币1704 个积分261帖子1510 发消息 最佳答案13 电梯直达1楼 发表于 2008-2-25 0449 只看该作者 倒序浏览 更多 1 本帖最后由 爱疯 于 2012-7-5 1042 编辑 嗯,是398部长交给我的一个小练习,发上来共享一下,之后就等398部长来解说吧。 一共做了4个方法,期间多谢八月梦游的帮助和提点。 题目是提取以下网页里的店铺名称和地址:(没做提取多页的,偷懒) searchsearchstore.htmloption.cityname=%CE%C2%D6%DDoption.category=4option.distance=2000pageNo=1 1. XMLHTTP对象,速度不错,受网页源代码改变影响,但是处理网页源文件最方便自由。 2. InternetExplorer对象,速度一般,受网页源代码改变影响,还需要激活IE,不喜欢。 3. QueryTables对象,平均速度最快,而且基本不受网页源代码改变影响,就是想获取多页数据的时候麻烦,而且多了一个web查询区域需要删除。 4. WebBrowser对象,第一次速度次于XMLHTTP,之后就很快,受网页源代码改变影响,原理同InternetExplorer,就是多了个控件在工作表上不好看,只能靠缩小控件来隐藏。 4种方法各有优劣,看实际情况来选取合适的方法了。 个人觉得网页提取数据,没有什么技巧可言,归根到底,原理基本都是提取网页的源代码然后进行分析处理。 在VBA里,可能用字符串处理的办法更容易理解,其实也可以用获取网页元素的办法,例如第2和第4种方法,就用了一些这样的技巧,但由于对网页的元素不太熟悉,因此如果要方便的方法,还需要多了解网页的结构和代码才行了。 PS:记得看我家耗子写的火狐浏览器脚本,似乎也只能用枚举办法列出不同网页其源码的共同地方来写,想100%通用似乎很难啊。 第一次附件: 8yEsMVej.rar (25.12 KB, 下载次数 1318) ===================================== 由于网页源码有所改变,08-7-14日重新修改后上传。 [此贴子已经被作者于2008-7-14 22817编辑过] jKtC2df0.rar 24.33 KB, 下载次数 1420 [分享]VBA提取网页数据(4种方法) 0JQmXNaH.rar 25.44 KB, 下载次数 1660 [分享]VBA提取网页数据(4种方法) 第一种方法出错,是什么原因? ? 可能是传递Object变量的问题,这样试试 Sub test() ??? Dim s As String ??? Dim arr ??? Dim i As Long ??? Dim k As Long ??? Dim t1 As Long ??? Dim t2 As Long ???? ??? s = GetSource(/search/searchstore.html?option.cityname=%CE%C2%D6%DDoption.category=4option.distance=2000pageNo=1) ??? arr = Filter(Split(s, li), 地址, True) ??? k = 1 ??? For i = 0 To UBound(arr) ??????? t1 = InStr(1, arr(i), ) + 1 ??????? t2 = InStr(t1, arr(i), ) ??????? Cells(k, 1) = Mid(arr(i), t1, t2 - t1) ??????? Cells(k + 1, 1) = 地址: Mid(arr(i), 13, InStr(1, arr(i), a) - 14) ??????? k = k + 3 ??? Next i End Sub Private Function GetSource(sURL As String) As String ??? Dim oXHTTP As Object ???? ??? Set oXHTTP = CreateObject(MSXML2.XMLHTTP) ??? oXHTTP.Open GET, sURL, False ??? oXHTTP.send ???? ??? GetSource = oXHTTP.responseText ??? Set oXHTTP = Nothing End Function 每打开一次excel,只能出来一次结果,没有编码转换。。。。看我

文档评论(0)

整理王 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档