将抓取数据复制到另一张纸上

时间:2019-02-22 11:39:41

标签: excel vba web-scraping

我正在使用以下代码从网页中抓取一段数据。

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:需要对象”时,我都会收到错误消息

任何有关如何解决此问题的建议将不胜感激。

2 个答案:

答案 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