从 URL VBA 中提取数据让 IE 不支持
Extracting Data from URL VBA getting IE not suppoting
我一直在使用以下 Excel VBA 宏从网站取回数据。直到几天前该网站停止支持 IE 之前,它一直运行良好。当然宏现在只是失败了,因为网页上没有数据可以带回Excel,有没有办法让“获取方法”(MSXML2.XMLHTTP)
这是我的代码
Public Sub GGGG()
Dim MSX As Object
Dim HTML As HTMLDocument
Dim URL As String
Dim UrlResponse As String
Dim N As Long
Dim sht1, sht2 As Worksheet
' On Error Resume Next
Set MSX = CreateObject("MSXML2.XMLHTTP")
Set HTML = New HTMLDocument
URL = "https://www.justdial.com/Agra/Yogi-General-Store-Opp-Eclave-Satiudum-Sadar-Bazaar/0562P5612-5612-120207212812-H5I2_BZDET"
With MSX
.Open "GET", URL, False
.setRequestHeader "If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT"
.send
UrlResponse = StrConv(.responseBody, vbUnicode)
End With
ActiveCell.Offset(0, 1) = UrlResponse
End Sub
我得到这样的回复
错误
处理您的请求时出错。
参考#97.ec8a2c31.1621136928.281f3ca8
IE不支持时请大家支持我如何获取数据
我不是编码专家
当网页以后不再支持IE时,您可以尝试web scrape using Google Chrome 安装新的插件,请请参阅以下 link 以了解加载项安装和如何写入 VBA。但是,在我看来,执行工作的最简单方法是使用 Uipath 免费社区版,它适用于所有类型的网络浏览器。
VBA 准则:
https://www.wiseowl.co.uk/vba-macros/videos/vba-scrape-websites/web-scraping-selenium-chrome/
VBA Selenium 的库安装:
https://code.google.com/archive/p/selenium-vba/downloads
您可能需要将 Feature Browser Emulation 设置为 zero,Daniel 在此处详述:
Everything You Never Wanted to Know About the Access WebBrowser Control
也就是说,即使在 Edge Chromium 中打开,您的 URL 也会失败,因此站点可能会出现一般性故障。
好的,尝试使用 vba 结合 selenium 从该站点获取标题和投票。
Sub FetchInfo()
Dim driver As Object, oTitle As Object
Dim oVotes As Object
Set driver = CreateObject("Selenium.ChromeDriver")
driver.get "https://www.justdial.com/Agra/Yogi-General-Store-Opp-Eclave-Satiudum-Sadar-Bazaar/0562P5612-5612-120207212812-H5I2_BZDET"
Set oTitle = driver.FindElementByCss("span.item > span", Raise:=False, timeout:=10000)
Set oVotes = driver.FindElementByCss("span.rtngsval > span.votes", Raise:=False, timeout:=10000)
Debug.Print oTitle.Text, oVotes.Text
End Sub
我一直在使用以下 Excel VBA 宏从网站取回数据。直到几天前该网站停止支持 IE 之前,它一直运行良好。当然宏现在只是失败了,因为网页上没有数据可以带回Excel,有没有办法让“获取方法”(MSXML2.XMLHTTP)
这是我的代码
Public Sub GGGG()
Dim MSX As Object
Dim HTML As HTMLDocument
Dim URL As String
Dim UrlResponse As String
Dim N As Long
Dim sht1, sht2 As Worksheet
' On Error Resume Next
Set MSX = CreateObject("MSXML2.XMLHTTP")
Set HTML = New HTMLDocument
URL = "https://www.justdial.com/Agra/Yogi-General-Store-Opp-Eclave-Satiudum-Sadar-Bazaar/0562P5612-5612-120207212812-H5I2_BZDET"
With MSX
.Open "GET", URL, False
.setRequestHeader "If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT"
.send
UrlResponse = StrConv(.responseBody, vbUnicode)
End With
ActiveCell.Offset(0, 1) = UrlResponse
End Sub
我得到这样的回复
错误 处理您的请求时出错。参考#97.ec8a2c31.1621136928.281f3ca8
IE不支持时请大家支持我如何获取数据 我不是编码专家
当网页以后不再支持IE时,您可以尝试web scrape using Google Chrome 安装新的插件,请请参阅以下 link 以了解加载项安装和如何写入 VBA。但是,在我看来,执行工作的最简单方法是使用 Uipath 免费社区版,它适用于所有类型的网络浏览器。
VBA 准则: https://www.wiseowl.co.uk/vba-macros/videos/vba-scrape-websites/web-scraping-selenium-chrome/
VBA Selenium 的库安装: https://code.google.com/archive/p/selenium-vba/downloads
您可能需要将 Feature Browser Emulation 设置为 zero,Daniel 在此处详述:
Everything You Never Wanted to Know About the Access WebBrowser Control
也就是说,即使在 Edge Chromium 中打开,您的 URL 也会失败,因此站点可能会出现一般性故障。
好的,尝试使用 vba 结合 selenium 从该站点获取标题和投票。
Sub FetchInfo()
Dim driver As Object, oTitle As Object
Dim oVotes As Object
Set driver = CreateObject("Selenium.ChromeDriver")
driver.get "https://www.justdial.com/Agra/Yogi-General-Store-Opp-Eclave-Satiudum-Sadar-Bazaar/0562P5612-5612-120207212812-H5I2_BZDET"
Set oTitle = driver.FindElementByCss("span.item > span", Raise:=False, timeout:=10000)
Set oVotes = driver.FindElementByCss("span.rtngsval > span.votes", Raise:=False, timeout:=10000)
Debug.Print oTitle.Text, oVotes.Text
End Sub