【问题标题】:Excel VBA XMLHTTPExcel VBA XMLHTTP
【发布时间】:2018-11-05 22:40:22
【问题描述】:

我正在尝试将一些东西自动添加到我的购物车中。这应该在页面切换之前有效。如何刷新 HTML 代码?

Dim Page As New MSXML2.XMLHTTP60
Dim HTML As New MSHTML.HTMLDocument
Dim Btn As Object

Page.Open "GET", "https://www.amazon.de/gp/product/B00IPH78O6/ref=ox_sc_act_image_1?smid=A1JZY7TFGMYK57&psc=1", False
Page.send

HTML.body.innerHTML = Page.responseText
Set Btn = HTML.getElementById("add-to-cart-button")
Btn.Click

HTML.body.innerHTML = Page.responseText
Set Btn = HTML.getElementById("hlb-view-cart-announce")
Btn.Click

【问题讨论】:

  • 是您尝试刷新页面还是将页面的更新副本放入变量中?具体是什么问题?
  • 是的,我尝试刷新当前的 html 代码。单击第一个按钮后,页面更改为不同的。当我尝试查找下一个按钮时,它不存在,因为 page.responseText 保存了旧页面
  • 你是如何执行这行Btn.Click的?您没有使用 IE,对吗?至少你的剧本没有这么说。
  • 是的,脚本不打开 IE,我有一个可以工作的 IE 版本,但它太慢了。这就是为什么我尝试让这个无 IE 版本运行..
  • @cYc2k - 如果编码正确,与打开 IE 并手动执行相同操作相比,所需时间相同(或更可能更少)。

标签: excel vba web-scraping xmlhttprequest amazon


【解决方案1】:

尝试使用selenium basic,例如

Option Explicit

Public Sub test()

    Dim d As WebDriver
    Set d = New ChromeDriver '<== You can change to other supported browsers e.g. IE, FireFox

    With d
         .Start "Chrome"
         .Get "https://www.amazon.de/gp/product/B00IPH78O6/ref=nav_signin?smid=A1JZY7TFGMYK57&psc=1&"
         .FindElementById("add-to-cart-button").Click
         .FindElementById("hlb-view-cart-announce").Click

         'Other stuff '<== Delete this line

         '.Quit
   End With

End Sub

您当前尝试的方法将要求您发出新请求,并且您可以复制一种方法来导航不同的页面。您可以尝试使用 Fiddler 或类似工具进行监控,但我只会使用 Selenium。

【讨论】:

猜你喜欢
  • 2014-07-19
  • 1970-01-01
  • 2021-12-20
  • 2017-04-22
  • 1970-01-01
  • 2018-02-25
  • 2013-09-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多