gpt4 book ai didi

vba - 从 zoopla.co.uk 获取数据

转载 作者:行者123 更新时间:2023-12-04 21:39:37 30 4
gpt4 key购买 nike

我正在尝试创建一个函数来查看我的电子表格中的一个单元格并从页面 http://www.zoopla.co.uk/market/uk/ 返回 Zoopla 'Z-Index' .注意 market URL 中的部分是唯一更改的部分,例如 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

enter image description here

要知道 VBA+IE 的强大,可以通过改编上面的 VBA 代码来做很多事情。

我们用
Set IE = CreateObject("InternetExplorer.Application")

代替
Set IE = new InternetExplorer.Application

避免添加 InternetExplorer.Application ActiveX 引用,最大限度地减少 RAM 需求
打开没有 IE 自动化使用的文档时。
'
' to fill C12, C13, C14,...
'
j = 12
For Each el In xcolElements
Range("C" & j).Value = el.FirstChild.Data
j = j + 1
Next

关于vba - 从 zoopla.co.uk 获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19835394/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com