ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: mail249120

[求助] VBA抓取网页表格数据

[复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-1-26 09:56 来自手机 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
Kaohsing 发表于 2019-1-25 14:25
是的。 每日从https://www.ccmn.cn/bxg/201/从这个页面获取连接,在请求连接得到数据。时间长了你就有历 ...

可以帮忙写个代码?

TA的精华主题

TA的得分主题

发表于 2019-1-26 10:09 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
mail249120 发表于 2019-1-26 09:56
可以帮忙写个代码?

15楼就是

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-1-26 15:18 来自手机 | 显示全部楼层
Kaohsing 发表于 2019-1-26 10:09
15楼就是

不明白,这个是针对那个链接的,网页一打开就是数据表格;而这个新的网页,首先先要抓取新出现链接地址,然后再进去才能出现数据表格了

TA的精华主题

TA的得分主题

发表于 2019-1-26 18:24 | 显示全部楼层
  1. Sub main()
  2. Set xmlhttp = CreateObject("msxml2.xmlhttp")
  3.     xmlhttp.Open "GET", "https://www.ccmn.cn/bxg/201/", False
  4.     xmlhttp.send
  5.     strhtml = xmlhttp.responseText
  6. Set HTML = CreateObject("htmlfile")
  7. HTML.write strhtml
  8. Set List = HTML.all.tags("table")(0).all.tags("a")(0) '获取网站新消息列表中的第一个链接
  9. NewUrl = Replace(List.href, "about:", "https://www.ccmn.cn")
复制代码


TA的精华主题

TA的得分主题

 楼主| 发表于 2019-1-27 09:47 | 显示全部楼层
Kaohsing 发表于 2019-1-25 14:22
Set xmlhttp = CreateObject("WinHttp.WinHttpRequest.5.1")

大神,厉害啊,佩服!感谢

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-1-27 09:55 | 显示全部楼层

谢谢指导,调试成功得到第一个链接地址
现在的问题是,每天可能出现的链接不止一个,这个数量是不恒定的,比如1-25就有9个链接地址,怎么得到所有这些链接呢?
另外,得到链接后怎么进入各自的链接再取所需表格数据?毕竟最终目的是要得到这些数据然后放在同一工作表中,非常感谢!

TA的精华主题

TA的得分主题

发表于 2019-1-27 13:16 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 samsinn 于 2019-1-27 13:19 编辑
mail249120 发表于 2019-1-27 09:55
谢谢指导,调试成功得到第一个链接地址
现在的问题是,每天可能出现的链接不止一个,这个数量是不恒定的 ...

你用"For Each i In List"方法遍历全部链接,或者先用语句判断链接后面的日期再取想要的链接
然后调用这个过程
Sub GetTable(ByVal NewUrl$)
Set xmlhttp = CreateObject("msxml2.xmlhttp")
    xmlhttp.Open "GET", NewUrl, False
    xmlhttp.send
    strhtml = xmlhttp.responseText
Set HTML = CreateObject("htmlfile")
HTML.write strhtml
Set tableX = HTML.all.tags("table")(0)
For i = 0 To tableX.Rows.Length - 1    '网页集合的计数是从0开始
      Set Row = tableX.Rows(i)
      '遍历每行所有表格
      For j = 0 To Row.Cells.Length - 1
          ActiveSheet.Cells(i + 1, j + 1) = Row.Cells(j).innertext
      Next
    Next
ActiveSheet.Columns("A:I").AutoFit
End Sub

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-1-27 19:14 | 显示全部楼层
samsinn 发表于 2019-1-27 13:16
你用"For Each i In List"方法遍历全部链接,或者先用语句判断链接后面的日期再取想要的链接
然后调用这 ...

多谢多谢,成功抓取所需数据,有问题再向你请教,还请不吝指教!

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-1-28 12:31 | 显示全部楼层
samsinn 发表于 2019-1-27 13:16
你用"For Each i In List"方法遍历全部链接,或者先用语句判断链接后面的日期再取想要的链接
然后调用这 ...

有个错误麻烦帮忙看看,
我查看了下,对应链接https://www.ccmn.cn/bxg/feibxg/2019-01-28/79523cd764ce4fbdb0ee13f332c58c5a.html上面是有table
QQ拼音截图未命名1.png
QQ拼音截图未命名.png

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-1-28 13:27 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
mail249120 发表于 2019-1-28 12:31
有个错误麻烦帮忙看看,
我查看了下,对应链接https://www.ccmn.cn/bxg/feibxg/2019-01-28/79523cd764ce ...

会不会是因为有多个链接循环的原因?因为我单独调试这个链接貌似没有问题
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-17 17:54 , Processed in 0.039943 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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