我正在使用以下代码从网页中抓取一段数据。
Sub Scrape()
Set HTML_Content = CreateObject("htmlfile")
'Get the WebPage Content to HTMLFile Object
With CreateObject("msxml2.xmlhttp")
.Open "GET", Range("M4"), False 'Cell that contains hyperlink
.send
HTML_Content.body.innerHTML = .responseText
End With
'Add New Worksheet
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets.Add(After:= _
ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count))
ws.Name = "ESTIMATE"
'Scrape Description
HTML_Content.getElementsByTagName ("div")
Debug.Print HTML_Content.getElementsByTagName("p")(0).innerText
End Sub
最后一行Debug.Print HTML_Content.getElementsByTagName("p")(0).innerText
打印“调试”屏幕中我需要的文本(这是一个句子)。
我遇到的问题是将数据复制到另一张纸上的特定单元格中。我已经尝试了以下方法,但无济于事:
HTML_Content.getElementsByTagName ("div")
text = HTML_Content.getElementsByTagName("p")(0).innerText
text.Copy Destination:=Sheets(1).Range("L4")
我也尝试过:
Dim test As Range
HTML_Content.getElementsByTagName ("div")
Set text = HTML_Content.getElementsByTagName("p")(0).innerText
text.Copy Destination:=Sheets(1).Range("L4")
还有:
HTML_Content.getElementsByTagName ("div")
HTML_Content.getElementsByTagName("p")(0).innerText.Copy Destination:=Sheets(1).Range("L4")
每次尝试复制“运行时424:需要对象”时,我都会收到错误消息
任何有关如何解决此问题的建议将不胜感激。
答案 0 :(得分:3)
一种更快的方法是使用css选择器和返回单个节点而不是集合的方法
Worksheets("SheetNamweGoesHere").Range("L4").Value = HTML_Content.querySelector("p").innerText
答案 1 :(得分:2)
完全不应该在这里使用复制。尝试填充单元格值。另外,您还没有声明变量text
,这就是为什么出现对象必需错误的原因。您的代码应为:
Dim text As String
text = HTML_Content.getElementsByTagName("p")(0).innerText
Sheets(1).Range("L4").Value = text