ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[已解决] 请问如何从网页上抓取数据 QueryTables不能用!

[复制链接]

TA的精华主题

TA的得分主题

发表于 2012-6-25 09:28 | 显示全部楼层 |阅读模式
http://www.hsi.com.hk/HSI-Net/HSI-Net 在网页第一栏 news room里面, 有一个Index / other notices,点进去以后,希望类似下面的信息全部抓取到excel里面,然后每天可以自动执行,请问这个VBA怎么写呢?? 已经尝试过excel自带的import data from web功能了,但是出来的全部都是loading.... 求牛人帮忙!!感谢!

28 May 2012                                                          Constituent Changes in Hang Seng Family of Indexes
                                                                                                                                                                                                                                                                                                                                                                        23 May 2012                                                          Constituent Changes in Hang Seng Family of Indexes
                                                                                                                                                                                                                                                                                                                                                                        10 May 2012                                                          Index Review Results of Thematic Indexes (Hong Kong Market)
                                                                                                                                                                                                                                                                                                                                                                        2 May 2012                                                          Constituent Changes in Hang Seng Family of Indexes
                                                                                                                                                                                                                                                                                                                                                                        18 April 2012                                                          Constituent Changes in Hang Seng Family of Indexes
                                                                                                                                                                                                                                                                                                                                                                        23 February 2012                                                          Constituent Changes in Hang Seng Family of Indexes
                                                                                                                                                                                                                                                                                                                                                                        10 February 2012                                                          Index Review Results of Benchmark Indexes
                                                                                                                                                                                                                                                                                                                                                                        10 February 2012                                                          Index Review Results of Thematic Indexes
                                                                                                                                                                                                                                                                                                                                                                        9 January 2012                                                          Constituent Changes in Hang Seng Family of Indexes
                                                                                                                                                                                                                                                                                                                                                                        3 January 2012                                                          Constituent Changes in Hang Seng Family of Indexes

TA的精华主题

TA的得分主题

发表于 2012-6-25 10:24 | 显示全部楼层
你要PDF吗?链接是pdf文件

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-6-25 10:37 | 显示全部楼层
kangatang 发表于 2012-6-25 10:24
你要PDF吗?链接是pdf文件

不需要PDF~ 只要表里面的那些信息就可以了~~ 谢谢!!

TA的精华主题

TA的得分主题

发表于 2012-6-25 10:40 | 显示全部楼层
本帖最后由 蓝天630902 于 2012-6-26 05:42 编辑

Sub Hang_Seng_Indexes()
    On Error Resume Next
    With CreateObject("internetexplorer.application")
        .Visible = True
        .Navigate "http://www.hsi.com.hk/HSI-Net/HSI-Net"
        Do Until .ReadyState = 4
            DoEvents
        Loop
        .Document.All.tags("a")(69).Click
        Do Until .Document.All.tags("input")(1).Value = "en.news.index_change"
            DoEvents
        Loop
        k = 0
        p = 0
        n = Range("a65536").End(xlUp).Row
        Set r = .Document.All.tags("td")
        For i = 0 To r.Length
            n = Range("a65536").End(xlUp).Row
            If Left(r(i).innerText, 12) = "Useful Links" Then Exit For
            If k = 1 Then
                p = p + 1
                s = p Mod 2
                Cells(1 + n, s + 1) = r(i).innerText
            End If
            If Trim(r(i).innerText) = "Title" Then k = 1
        Next i
        .Quit
    End With
End Sub

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-6-25 10:44 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
先谢过再看 太牛了!!

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-6-25 13:48 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
请问 .Document.All.tags("a")(69).Click 还有 .Document.All.tags("td") 是什么意思呀? 网上也查不到解释,excel自带的帮助也没有解释的...

这个是一种神马语言呐....
感觉操作都隐藏在internet explorer里面的样子,vba到底每一步发生了什么我没法看到...
OH 好难...

TA的精华主题

TA的得分主题

发表于 2012-6-25 20:35 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
lalasnoopy 发表于 2012-6-25 13:48
请问 .Document.All.tags("a")(69).Click 还有 .Document.All.tags("td") 是什么意思呀? 网上也查不到解释 ...

Sub Hang_Seng_Indexes()
    On Error Resume Next '
    With CreateObject("internetexplorer.application") '创建一个空的ie
        .Visible = True 'ie可见
        .Navigate "http://www.hsi.com.hk/HSI-Net/HSI-Net" '导航到http://www.hsi.com.hk/HSI-Net/HSI-Net
        Do Until .ReadyState = 4 '直到ie加载完毕
            DoEvents
        Loop
        .Document.All.tags("a")(69).Click '点击第69个“a”标签,这里“a”是网页标签
        t1 = Timer
        Do Until Timer > t1 + 2 '等待2秒钟
            DoEvents
        Loop
        Do Until .ReadyState = 4 '直到新ie加载完毕
            DoEvents
        Loop
        k = 0
        p = 0
        n = Range("a65536").End(xlUp).Row '第a列最后行号
            Set r = .Document.All.tags("td") '指定r为“td”标签,这里“td”也是网页标签
            For i = 0 To r.Length 'r的长度,也就是r的个数
                n = Range("a65536").End(xlUp).Row '第a列最后行号
                If Left(r(i).innerText, 12) = "Useful Links" Then Exit For '如果,第i个r(也就是第i个td)的内容的左边的12个字符是“Useful Links”,就跳出循环。
                If k = 1 Then
                p = p + 1
                s = p Mod 2
                Cells(1 + n, s + 1) = r(i).innerText '把第i个r(也就是第i个td)的内容写入Cells(1 + n, s + 1)单元格
                End If '
                If Trim(r(i).innerText) = "Title" Then k = 1 '如果,第i个r(也就是第i个td)的内容是“Title”,就把1赋给k。
            Next i
    End With
End Sub

TA的精华主题

TA的得分主题

发表于 2012-6-25 21:38 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
蓝天630902 发表于 2012-6-25 20:35
Sub Hang_Seng_Indexes()
    On Error Resume Next '
    With CreateObject("internetexplorer.appli ...

69是怎么来的?

TA的精华主题

TA的得分主题

发表于 2012-6-25 21:46 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
bluexuemei 发表于 2012-6-25 21:38
69是怎么来的?

Sub 查找a标签()
    On Error Resume Next
    With CreateObject("InternetExplorer.Application")
        .Visible = True
        .Navigate "http://www.hsi.com.hk/HSI-Net/HSI-Net"
        Do Until .ReadyState = 4
            DoEvents
        Loop
        Set r = .Document.All.tags("a") '“a”标签
        For i = 0 To r.Length - 1       '标签的个数
            Cells(i + 1, 1) = i
            Cells(i + 1, 2) = r(i).innerText '把第i个标签的内容写入第i+1行,2 列
        Next i
    End With
End Sub

TA的精华主题

TA的得分主题

发表于 2012-6-25 21:50 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-6-15 07:08 , Processed in 0.047025 second(s), 13 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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