首页 > 解决方案 > 使用 Excel VBA,如何抓取不在表格中的 Web 数据

问题描述

我正在尝试从 Google 地图页面中提取一段数据(驾驶时间)。那条数据似乎不是任何“表”的一部分,所以我不知道如何在 VBA 代码中指定我想要什么数据。

我对 Excel VBA 相当满意,但对 Web Scraping 很陌生。我已经成功地做到了这一点:

我查看了 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

标签: excelvbaweb-scraping

解决方案


推荐阅读