使用 VBA 从网页复制特定文本
Copy particular text from a web page using VBA
我想使用 vba 从网页复制特定文本并将其粘贴到我的宏中。有人可以帮我吗?
我已尝试使用以下代码,但无法使用 vba 从网页获取文本。非常感谢任何帮助。
Sub get_text_from_web()
Dim request as Object
Dim response As String
Dim html As new HTMLDocument
Dim website As String
Dim ab As Variant
website = "http://www.google.com"
Set request = CreateObject("MSXML2.XMLHTTP")
request.Open "GET", website, False
request.Send
response = StrConv(request.responseBody, vbUnicode)
html.body.innerHTML = response
ab = html.getElementsByClassName("gNO89b")(0).innerText
MsgBox ab
End Sub
您可以使用 xhr 从 google.com 抓取带有 class gNO89b
的元素。但这是搜索按钮,它没有 innertext
,而是一个属性 Value
,内容为 Google Search
.
此外,你显然不能用MSXML2.XMLHTTP
读出google.com,而必须用MSXML2.ServerXMLHTTP.6.0
。由于我自己也不知道确切的区别,所以我无法解释为什么会这样。
但这还不够。此外,必须指定 UserAgent。这些是客户端发送来标识自己的标识符。可以为 xhr 使用浏览器标识符:
.setRequestHeader "User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Firefox/91.0"
StrConv(request.responseBody, vbUnicode)
行也不适合您。也没有必要先将返回文档的内容写到一个变量中。您可以将其直接复制到所提供的 HTML 文档的正文中:
html.body.innerHTML = .responseText
用下面的VBA代码,输出搜索按钮的内容。但我很确定其中的 none 会对您有所帮助。从网页读取数据没有通用的代码。由于每个页面都是单独编程的,因此必须为每个页面开发一个单独的代码。我认为 Google 搜索按钮不是您的目标 ;-)
Sub get_text_from_web()
Dim html As Object
Dim website As String
website = "https://www.google.com"
Set html = CreateObject("htmlFile")
With CreateObject("MSXML2.ServerXMLHTTP.6.0")
.Open "GET", website, False
.setRequestHeader "User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Firefox/91.0"
.Send
If .Status = 200 Then
html.body.innerHTML = .responseText
MsgBox html.getElementsByClassName("gNO89b")(0).getAttribute("value")
Else
MsgBox "Page not loaded. HTTP status " & .Status
End If
End With
End Sub
我想使用 vba 从网页复制特定文本并将其粘贴到我的宏中。有人可以帮我吗?
我已尝试使用以下代码,但无法使用 vba 从网页获取文本。非常感谢任何帮助。
Sub get_text_from_web()
Dim request as Object
Dim response As String
Dim html As new HTMLDocument
Dim website As String
Dim ab As Variant
website = "http://www.google.com"
Set request = CreateObject("MSXML2.XMLHTTP")
request.Open "GET", website, False
request.Send
response = StrConv(request.responseBody, vbUnicode)
html.body.innerHTML = response
ab = html.getElementsByClassName("gNO89b")(0).innerText
MsgBox ab
End Sub
您可以使用 xhr 从 google.com 抓取带有 class gNO89b
的元素。但这是搜索按钮,它没有 innertext
,而是一个属性 Value
,内容为 Google Search
.
此外,你显然不能用MSXML2.XMLHTTP
读出google.com,而必须用MSXML2.ServerXMLHTTP.6.0
。由于我自己也不知道确切的区别,所以我无法解释为什么会这样。
但这还不够。此外,必须指定 UserAgent。这些是客户端发送来标识自己的标识符。可以为 xhr 使用浏览器标识符:
.setRequestHeader "User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Firefox/91.0"
StrConv(request.responseBody, vbUnicode)
行也不适合您。也没有必要先将返回文档的内容写到一个变量中。您可以将其直接复制到所提供的 HTML 文档的正文中:
html.body.innerHTML = .responseText
用下面的VBA代码,输出搜索按钮的内容。但我很确定其中的 none 会对您有所帮助。从网页读取数据没有通用的代码。由于每个页面都是单独编程的,因此必须为每个页面开发一个单独的代码。我认为 Google 搜索按钮不是您的目标 ;-)
Sub get_text_from_web()
Dim html As Object
Dim website As String
website = "https://www.google.com"
Set html = CreateObject("htmlFile")
With CreateObject("MSXML2.ServerXMLHTTP.6.0")
.Open "GET", website, False
.setRequestHeader "User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Firefox/91.0"
.Send
If .Status = 200 Then
html.body.innerHTML = .responseText
MsgBox html.getElementsByClassName("gNO89b")(0).getAttribute("value")
Else
MsgBox "Page not loaded. HTTP status " & .Status
End If
End With
End Sub