【问题标题】:Get Data using MSXML2.XMLHTTP使用 MSXML2.XMLHTTP 获取数据
【发布时间】:2021-02-25 22:53:22
【问题描述】:

我正在尝试使用 MSXML2.XMLHTTP 获取数据 但它没有工作

有什么想法吗?

Sub getdata

Dim request As Object
Dim response As String
Dim html As New HTMLDocument
Dim website As String
Dim price As String
Dim sht As Worksheet


Application.DisplayAlerts = False
Set sht = ActiveSheet


    On Error Resume Next
    website = "https://shopee.co.id/AFI-EC-Tshirt-Yumia-(LD-90-P-57)-i.10221730.5568491283"
    Set request = CreateObject("MSXML2.XMLHTTP")

   request.Open "GET", website, False
   request.setRequestHeader "If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT"
   request.send
   response = StrConv(request.responseBody, vbUnicode)
   html.DocumentElement.innerHTML = response

    
    price = html.querySelector("div.AJyN7v")(0).innerText
    
    Debug.Print price
    
    Application.StatusBar = ""
    On Error GoTo 0
Application.DisplayAlerts = True``
End Sub

我做了很多方法,但仍然没有工作, 希望有人可以帮助我

【问题讨论】:

  • “没有工作”不是对运行代码时发生的情况的有用描述。你有错误吗?如果是什么错误和哪一行。请查看How to Ask 并考虑通过一些额外的细节改进您的帖子。
  • 没有错误信息
  • 您可以尝试运行我的代码吗?我想得到价格
  • 尝试不使用On Error Resume Next
  • 有错误信息 Object variable or With block variable not set

标签: vba web-scraping


【解决方案1】:

该页面上的几乎所有内容都需要加载 javascript。 Javascript 不能与 xmlhttp 请求一起运行到登陆页面,所以价格永远不会被检索到..

正在从返回 json 的附加 API 调用中动态检索价格。

如果您检查 url,您将获得以下信息:

https://shopee.co.id/AFI-EC-Tshirt-Yumia-(LD-90-P-57)-i.10221730.5568491283

最后一组连续数字是产品 ID,即5568491283

如果你打开开发工具的网络选项卡F12,然后按F5刷新更新页面的网络流量,然后检查xhr only流量,然后在搜索中输入你的产品id框,检索到的第一个结果是返回价格的 xhr:

https://shopee.co.id/api/v2/item/get?itemid=5568491283&shopid=10221730

响应是 json,因此您需要一个 json 解析器来提取结果(或在字符串上使用正则表达式 - 不太可取)

在标题子选项卡中,您可以查看有关发出的 xhr 请求的信息。

检查条款和条件以查看是否允许抓取以及是否有用于检索此数据的公共 API。

【讨论】:

猜你喜欢
  • 2019-12-10
  • 2021-05-25
  • 2014-05-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-22
  • 2017-12-25
  • 1970-01-01
相关资源
最近更新 更多