【问题标题】:WebScraping Using Excel VBA on Mac在 Mac 上使用 Excel VBA 进行网页抓取
【发布时间】:2021-03-03 02:27:44
【问题描述】:
我知道有几个类似的问题,但以前的解决方案似乎对我没有用。我已经尝试了现有的宏、网络查询以及几乎所有的东西,但到目前为止它们都失败了。
我想从https://www.x-rates.com/table/?from=USD&amount=1 中抓取货币汇率数据并使用 VBA 将其转换为表格形式。我的电脑是 macOS 10.14.16 Mojave,我的 Excel 版本是 16.39 版。
我知道 InternetExplorer 对象不适用于我的操作系统。尽管按照 tee 的步骤,我也无法创建网络查询。
谁能帮我找出一种方法来访问该网站的源代码?非常感谢。
【问题讨论】:
标签:
vba
macos
web-scraping
【解决方案1】:
我现在可以在 Windows 上使用 Excel 轻松获取这些数据。
- 从菜单:数据/来自网络
- 输入您在上面提供的网址
- 从导航器列表中选择“Table1”
- 点击对话框底部的“加载”
如果此解决方案不适合您,您能否帮助我们进一步了解您的限制条件?
对这些步骤使用“记录宏”,我得到以下宏:
Sub Macro1()
'
' Macro1 Macro
'
'
ActiveWorkbook.Queries.Add Name:="Table 1", Formula:= _
"let" & Chr(13) & "" & Chr(10) & " Source = Web.Page(Web.Contents(""https://www.x-rates.com/table/?from=USD&amount=1""))," & Chr(13) & "" & Chr(10) & " Data1 = Source{1}[Data]," & Chr(13) & "" & Chr(10) & " #""Changed Type"" = Table.TransformColumnTypes(Data1,{{""US Dollar"", type text}, {""1.00 USD"", type number}, {""inv. 1.00 USD"", type number}})" & Chr(13) & "" & Chr(10) & "in" & Chr(13) & "" & Chr(10) & " #""Changed Type"""
ActiveWorkbook.Worksheets.Add
With ActiveSheet.ListObjects.Add(SourceType:=0, Source:= _
"OLEDB;Provider=Microsoft.Mashup.OleDb.1;Data Source=$Workbook$;Location=""Table 1"";Extended Properties=""""" _
, Destination:=Range("$A$1")).QueryTable
.CommandType = xlCmdSql
.CommandText = Array("SELECT * FROM [Table 1]")
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.ListObject.DisplayName = "Table_1"
.Refresh BackgroundQuery:=False
End With
End Sub