Excel 为MTG卡创建电子表格,根据特定网站自动更新价格

Excel 为MTG卡创建电子表格,根据特定网站自动更新价格,excel,vba,web-scraping,Excel,Vba,Web Scraping,这里是新手高手;熟悉基本办公工作的公式,但没有宏方面的经验 我有一份大约1100件物品的清单,价格几乎每天都在波动。我试图应用宏从网站(面对面游戏)获取价格,并在文档打开时应用10%的折扣。我读过几篇指导性文章,但解释很快就让我不知所措。我同意佩赫的观点,如果网站有API,那么从他们那里获取数据就更容易了。下面是我非常缺乏的函数,我使用它进行非常简单的API调用: Public Function API( _ ByVal URL As String, _

这里是新手高手;熟悉基本办公工作的公式,但没有宏方面的经验


我有一份大约1100件物品的清单,价格几乎每天都在波动。我试图应用宏从网站(面对面游戏)获取价格,并在文档打开时应用10%的折扣。我读过几篇指导性文章,但解释很快就让我不知所措。

我同意佩赫的观点,如果网站有API,那么从他们那里获取数据就更容易了。下面是我非常缺乏的函数,我使用它进行非常简单的API调用:

Public Function API( _
                ByVal URL As String, _
                ByVal Action As String, _
                Optional Body As String = "") As String
    
    'Action is GET, POST, PUT or DELETE
    
    Dim http As Object
    Set http = CreateObject("WinHttp.WinHttpRequest.5.1")
    
    http.Open Action, URL, False
    If Action <> "GET" Then http.SetRequestHeader "Content-Type", "application/json"
    
    If Body <> "" Then
        http.Send Body
    Else
        http.Send
    End If
    
    If http.Status = 200 And Action <> "GET" Then
        API = "Successfully Sent!"
    Else
        If http.Status <> 200 And http.responsetext = "" Then
            API = http.statustext
        Else
            API = http.responsetext
        End If
    End If
    
End Function
公共函数API(_
ByVal URL作为字符串_
ByVal操作作为字符串_
可选正文作为字符串=”)作为字符串
'操作是获取、发布、放置或删除
Dim http作为对象
设置http=CreateObject(“WinHttp.WinHttpRequest.5.1”)
http.Open操作,URL,False
如果操作为“GET”,则为http.SetRequestHeader“内容类型”、“应用程序/json”
如果主体是“”,那么
发送正文
其他的
http.Send
如果结束
如果http.Status=200且操作“GET”,则
API=“已成功发送!”
其他的
如果http.Status 200和http.responsetext=“”,则
API=http.statustext
其他的
API=http.responsetext
如果结束
如果结束
端函数

这只是一个非常基本的函数,用于插入URL并发送文本块,或者请求该URL向您发送文本。您要做的是找出您试图从中获取数据的网站的URL方案,并在这些URL处使用Action=“get”发送一系列API调用。然后,您只需解析他们返回给您的文本。

请阅读,您没有提出任何问题。请注意,需求列表并不是在问问题。此外,这个网站是没有免费的代码编写服务,因此你需要精确的“问题”,这是一个太广泛的方式。甚至不清楚你希望我们给出什么样的答案。我们需要知道你尝试了什么,以及你到底在哪里被卡住了。这里有很多关于堆栈溢出的示例,说明如何从网站中刮取数据。如果网站提供了一个API,一定要使用它,而不是刮。还有,你说得对。感谢您对如何使用该网站的态度得体,同时仍然提供帮助。我以后一定要让自己知道这些指导原则。非常感谢!我也许可以接受这个问题,找到我的解决方案。非常感谢如果您喜欢我的答案,请单击投票箭头下的绿色复选标记。@NathanQuigley如果这回答了您的问题,请向上投票/将其标记为已解决: