ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 44080|回复: 24

[转帖] VBA提取网页数据(4种方法)

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2012-6-19 17:27 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
1.  XMLHTTP对象,速度不错,受网页源代码改变影响,但是处理网页源文件最方便自由。
2. InternetExplorer对象,速度一般,受网页源代码改变影响,还需要激活IE,不喜欢。
3. QueryTables对象,平均速度最快,而且基本不受网页源代码改变影响,就是想获取多页数据的时候麻烦,而且多了一个web查询区域需要删除。
4. WebBrowser对象,第一次速度次于XMLHTTP,之后就很快,受网页源代码改变影响,原理同InternetExplorer,就是多了个控件在工作表上不好看,只能靠缩小控件来隐藏。
4种方法各有优劣,看实际情况来选取合适的方法了。
个人觉得网页提取数据,没有什么技巧可言,归根到底,原理基本都是提取网页的源代码然后进行分析处理。
在VBA里,可能用字符串处理的办法更容易理解,其实也可以用获取网页元素的办法,例如第2和第4种方法,就用了一些这样的技巧,但由于对网页的元素不太熟悉,因此如果要方便的方法,还需要多了解网页的结构和代码才行了。
PS:记得看我家耗子写的火狐浏览器脚本,似乎也只能用枚举办法列出不同网页其源码的共同地方来写,想100%通用似乎很难啊。

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-6-19 17:28 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
学习原理,想办法入门

TA的精华主题

TA的得分主题

发表于 2012-6-19 17:40 | 显示全部楼层
本帖最后由 kangatang 于 2012-6-19 17:44 编辑

谢谢整理。
XMLHTTP的速度最快,而且他不需要等待加载和运行脚本。所以我比较喜欢。
特别是XMLHTTP+正则还是有点搞头的。

但是他的header比较难做。只是一知半解。
所以各种方法,哪种方便就用哪种。


TA的精华主题

TA的得分主题

发表于 2012-6-19 18:27 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-6-19 18:44 | 显示全部楼层
本帖最后由 引子玄 于 2012-6-19 18:44 编辑
kangatang 发表于 2012-6-19 17:40
谢谢整理。
XMLHTTP的速度最快,而且他不需要等待加载和运行脚本。所以我比较喜欢。
特别是XMLHTTP+正则还 ...


你都会搞网页数据抓取了,羡慕,我至今还在门外发愣着,就好象起初学VBA一样的状态,在门外徘徊了很久一样

TA的精华主题

TA的得分主题

发表于 2012-6-19 18:45 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
这个好像有了.......

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-6-19 18:47 | 显示全部楼层
jiminyanyan 发表于 2012-6-19 18:45
这个好像有了.......

请补充~~~想细听

TA的精华主题

TA的得分主题

发表于 2012-7-24 14:26 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2012-7-24 16:25 | 显示全部楼层
InternetExplorer对象
灵活,易于控制,比如说:我要定位到楼上的“要有实例就好了”
我们就可以用下面的代码来实现:


Sub ExcelVBA程序开发_Excel_Home论坛()
    On Error Resume Next
    With CreateObject("internetexplorer.application")
        .Visible = True
        .Navigate "http://club.excelhome.net/thread-883183-1-2.html"
        Do Until .ReadyState = 4
            DoEvents
        Loop
        .Document.all.tags("table")(21).ScrollIntoView    '定位到第21个table元素(table标签)位置
    End With
End Sub

TA的精华主题

TA的得分主题

发表于 2012-7-24 16:30 | 显示全部楼层
好不好,不存在于外部,而是存在于我们的内心的,从来没有天生的好和坏,只是我们的认识是否到位。
数控机床加工出来的东西,很好。可是呢,手工做的更有价值。这就要看你的取舍了。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-3-29 16:45 , Processed in 0.058058 second(s), 8 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表