excel - 使用 Excel VBA,如何抓取不在表格中的 Web 数据
问题描述
我正在尝试从 Google 地图页面中提取一段数据(驾驶时间)。那条数据似乎不是任何“表”的一部分,所以我不知道如何在 VBA 代码中指定我想要什么数据。
我对 Excel VBA 相当满意,但对 Web Scraping 很陌生。我已经成功地做到了这一点:
编写了 VBA 子例程,它显示了所需的网页(它恰好是谷歌地图,显示两个不同邮政编码之间的方向。
我可以“直观地”看到我想要的数据:“47 分钟”(邮政编码之间的行驶时间)。
我查看了 HTML 源代码,发现里面有“47 min”,但它被埋在很多页面的 javascript 文本中(script type="text/javascript"),所以我不知道如何识别它让 VBA 分离并提取它。
我在网络抓取上阅读的大部分内容都描述了如何从表中获取数据。这似乎不适用于我的情况。
我这样做对吗?或者,我是在左外野吗?
到目前为止我创建的 VBA 代码如下。
感谢任何方向。
费尼曼99
Sub Drive_Time_Between_Zip_Codes()
'
' Create IE Object
Set objIE = CreateObject("InternetExplorer.Application")
' Set Dimensions of IE page
objIE.Top = 0
objIE.Left = 0
objIE.Width = 800
objIE.Height = 600
' I'll set "Visible" to False, after I get this VBA code working
objIE.Visible = True
' Bring up Google Maps and request directions between a pair of Zip Codes
' (The Zip Code pair is right after "/maps/dir/" in the URL)
' (Right now, I'm just specifying one pair, to figure out how to extract the Drive Time.
' But once I get this working, I will iterate through many, many pairs of Zip Codes,
' to build a "Drive Time" chart.)
objIE.Navigate ("https://www.google.com/maps/dir/08003/19406")
' Wait for IE to be done rendering, etc.
Do
DoEvents
Loop Until objIE.readystate = 4
' AT THIS POINT, THE DESIRED WEB PAGE IS DISPLAYED.
' HERE IS WHERE I WANT TO EXTRACT "DRIVE TIME" (e.g. "XX min" OR "X h XX min", etc.)
' THE DRIVE TIME ACTUALLY IS DISPLAYED A FEW DIFFERENT PLACES ON THE PAGE.
' ?? BUT... HOW DO I "SCRAPE" IT??
End Sub
解决方案
推荐阅读
- javascript - JS中的变量是对象吗
- c++ - 如何在 C++ 中使用矢量打印出特定员工的记录?
- c++ - 如何在普通数组的单元格中插入结构或指针?C++
- javascript - 如何通过在javascript中调用函数在对象内添加属性
- javascript - 如果选中其他单选按钮,请检查单选按钮
- html - 类型号不适用于小数位
- css - 在我的情况下,我必须为一行使用 5 col-md,另一个 col-md 需要在没有打开行的情况下进入下一行
- python - 如何将 dict keyx:valuex 列表转换为 dict key:keyx, value:valuex 列表?
- vue-material - 未在 Vue Material md-tabs 中列出的页面会抛出“未捕获的类型错误:无法读取属性 'parentNode' of null”
- matplotlib - 我可以反转matplotlib的pcolormesh的过程吗?