vba 抓取php网页(我的目标:让职场人士能高效使用office为其服务)
优采云 发布时间: 2022-01-16 23:38vba 抓取php网页(我的目标:让职场人士能高效使用office为其服务)
我的目标:让中国大学生在走出校门的那一刻就具备了这些办公技能,让专业人士能够高效地利用办公为他们服务。支持我,为自己加油!
人们总是问我VBA难学吗?
怎么说呢,如果能掌握VBA的精髓,学起来也没那么复杂。
跟大家分享一下学习网络爬虫的过程。之前对VBA网页抓取技术一窍不通,今天抽空研究了一下。虽然还有很多不明白的地方,但我大概知道如何进一步学习了。
之前写过一篇文章文章,是PowerQuery技术抓取的网页数据,大家可以看一下:
在 网站 上将多页数据导入 Excel 真是太棒了!》
今天我们使用VBA代码从以下网页爬取数据:
很多人看到自己看不懂的代码总是会一头雾水。其实只要仔细分析一下,你就会觉得没那么复杂。只要你知道VBA的本质就是用代码来操作对象,你永远学不完对象,所以遇到不熟悉的对象也不用怕,套路都差不多!
起初,我在 网站 上阅读了一篇关于网络抓取的文章 文章:
最终代码如下:
然后文章说可以抓到网站上的数据,搞得我一头雾水。乍一看,文章 并不完整。后来找到原链接,是老外写的一篇文章的文章,不过也是不完整的。
但是上面的文章让我明白了,其实网页抓取使用了两个对象:Microsoft HTML Object Library和Microsoft Internet Controls,就像当时学字典一样,如果不想直接创建对象用代码,那么在声明对象变量之前应该绑定两个对象,这称为早期引用。
我从上面的代码得到的信息是:首先根据URL获取网页文档,文档收录很多内容,文档是一个对象,可以使用getElementsByTagName()函数从中提取表格object,提取出来的table也是object,其他不清楚。
所以我的目标是调查 getElementsByTagName() 到底得到了什么?
网上搜索后,看到如下代码:
在这一点上,我可能明白发生了什么。
先根据url获取网页文档doc,然后使用doc.getElementsByTagName("table")获取doc中的表格,不一定只有一个表格,所以使用索引来指定哪个表格,表格收录行,每行收录单元格,循环遍历表格每一行的每个单元格,单元格的innerText属性就是单元格中的值,类似于Excel中单元格的Value属性。
于是根据猫和虎,我处理了如下代码:
测试完全正确:
然后看到黑图中的代码使用了后期绑定,于是学习了后期绑定的写法,改成如下代码:
测试也很完美。
以上只提取一页数据,如何提取多页?明天继续写!
接下来我应该重点介绍 HTML 代码中文档对象的基本元素、结构以及其他方法和属性。