从zoopla.co.uk获取数据

我试图创build一个函数,在我的电子表格中查看一个单元格,并从http://www.zoopla.co.uk/market/uk/页面返回Zoopla'Z-Index'。 请注意,url中的market部分是例如BS8,BS6等发生更改的唯一位,这应该从我的电子表格中的选定单元格中获取。 然后应该返回Z-Index值,这是All,Detached,Semi和Terrace的平均房价。

这是我迄今为止创造的。

我写的代码并不是从单元格A1中提取邮政编码的平均属性值。 有任何想法吗?

 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Row = Range.("L:L").Row And _ Target.Column = Range.("L:L").Column Then Dim IE As New InternetExplorer IE.Visible = False IE.navigate "www.zoopla.co.uk/market/" & Range("A1/").Value Do DoEvents Loop Until IE.readyState = READYSTATE_COMPLETE Dim Doc As HTMLDocument Set Doc = IE.document Dim sSPAN As String sSPAN = Trim(Doc.getElementsByTagName("span")(1).innerText) sSPAN = Split(sSPAN, vbNewLine)(0) Range("O:O").Value = Split(sSPAN,", ")(0) Range("P:P").Value = Split(sSPAN,", ")(1) End If End Sub![Data needed][1] 

你的脚本有一些错误,我纠正了一些行,它的工作原理:

 Private Sub Worksheet_Change(ByVal Target As Range) Const READYSTATE_COMPLETE = 4 Dim j Dim xcolElements Dim Doc, el, IE ' ' if the content of the cell L1 changes: ' If Target.Row = Range("L1").Row And _ Target.Column = Range("L1").Column Then Set IE = CreateObject("InternetExplorer.Application") IE.Visible = False IE.Navigate "http://www.zoopla.co.uk/market/" & Range("A1").Value & "/" Do DoEvents Loop Until Not IE.Busy And IE.ReadyState = READYSTATE_COMPLETE Set Doc = IE.Document Set xcolElements = Doc.getElementsByClassName("zoopla") ' j = 1 For Each el In xcolElements Range("O" & j).Value = el.FirstChild.Data j = j + 1 Next ' IE.Quit ' End If ' ' destruct objects: ' Set el = Nothing Set xcolElements = Nothing Set Doc = Nothing Set IE = Nothing ' End Sub 

在这里输入图像说明

您知道VBA + IEfunction非常强大,您可以通过调整上述VBA代码来完成许多操作。

我们用

 Set IE = CreateObject("InternetExplorer.Application") 

代替

 Set IE = new InternetExplorer.Application 

避免添加InternetExplorer.Application ActiveX引用,从而最大限度地减less在不使用IE自动化的情况下打开文档时的RAM要求。

 ' ' to fill C12, C13, C14,... ' j = 12 For Each el In xcolElements Range("C" & j).Value = el.FirstChild.Data j = j + 1 Next