excel - 数据抓取不同的资产类别数据
问题描述
我正在尝试编写一些代码来抓取不同的资产类别数据。用户输入他们想要获取信息的股票名称,然后代码获取该特定股票的相关定量数据。
我在想 VBA,因为它很容易将数据输出到 Excel 电子表格中。但是如果更容易的话,我对其他语言持开放态度(我知道一点 Python)。
我遇到的问题是似乎没有任何独特的标签可供查看,然后才能访问我想要的数据表。
例如,我可以GetElementsByClassName("clear")
,但其中许多存在。我想也许我可以访问表类名本身。我对此有两个问题:
1):我无法让它在 VBA 中工作,因为它似乎不喜欢这个类名的空格
2):即使我让它工作,我也不知道over stock的类名是否相同......
任何建议都非常感谢。这是我最复杂的 VBA 项目。
解决方案
我无法让它在 VBA 中工作,因为它似乎不喜欢这个类名的空格
该元素有 3 个类;CSS 类中没有空格。
你可以GetElementsByClassName("companyFinancialSumaryTbl")
,这会给你一个包含<table>
元素的节点集合,大概是第一个也是唯一的项目。
从那里你可以得到<tbody>
子元素,然后你可以迭代它的子元素,<tr>
并且在每一行你可以迭代<td>
子节点;当 a<td>
有bold
课程时,您知道您正在查看行标题。
即使我让它工作,我也不知道overstocks的类名是否相同......
我们也不知道!如果有另一个表要从中读取数据,它可能没有companyFinancialSummaryTbl
类,可能有一些overstocksTbl
类;无论哪种方式,它将是一个<table>
带有子节点的元素,您可以导航和迭代。
我对网络抓取不是很熟悉,但是假设你<table>
在 object 中有元素e
,那么你可以想象得到这样的<tbody>
元素:
Dim thead As Object
Set thead = e(0)
Dim tbody As Object
Set tbody = e(1)
如果可行,那么这也应该:
Dim tr As Object
For Each tr In tbody
Dim td As Object
For Each td In tr
Debug.Print td,; ' comma prints a tab, semicolon skips printing the line break
Next
Debug.Print 'print the line break
Next
推荐阅读
- openlayers - 检查坐标是否在 OL 中某个特征的边界上
- python - COSMO 的 MetPy 和旋转纬度经度网格?
- c++ - 当等效函数只调用一次时,为什么转换运算符调用复制构造函数两次?
- android - Firestore:检查虚拟文档是否存在
- r - 如果变量已经是整数,为什么 R 返回我的变量必须是整数的错误?
- node.js - axios 和 Azure Application Insights 的问题
- javascript - 通过对象键循环的函数抛出未定义
- mysql - 结果集结束后的 Java Sql 异常
- sql - 使用 if 条件时执行选择查询时出错
- testing - 如何测试依赖于其他小部件通过提供程序设置的数据的小部件?