Извлечение данных из окна сообщений Excel в электронную таблицу с использованием VBA (данные извлекаются из Zillow) - PullRequest
0 голосов
/ 26 июня 2018

Я новичок в кодировании и пытаюсь выяснить, как извлечь конкретные данные из Zillow и импортировать их в Excel.Честно говоря, я довольно растерялся, пытаясь выяснить это, и я просматривал форму и другие онлайн-видео, но мне не повезло.

Вот ссылка на сайт, который я используюhttps://www.zillow.com/new-york-ny/home-values/

Я хочу вывести все числа в Excel, чтобы я мог выполнить некоторые вычисления.Если бы кто-то мог помочь мне просто включить индекс стоимости дома Zillow в $ 660 000 в excel, я чувствую, что могу выяснить все остальное.

Это код с сайта

<ul class="value-info-list" id="yui_3_18_1_1_1529698944920_2626">
<li id="yui_3_18_1_1_1529698944920_2625">
    <!-- TODO: need zillow logo icon here -->
    <!-- <span class="zss-logo-color"><span class="zss-font-icon"></span></span> -->

    <span class="value" id="yui_3_18_1_1_1529698944920_2624">
        $660,000
    </span>

    <span class="info zsg-fineprint"> ZHVI

    </span>

Я пробовал getElementsByTagName getElementById и getElemenByClass Идентификатор сбивает меня с толку, так как я хочу иметь возможность ввести любой город в Excel, и он будет искать данные на веб-странице на zillow.Все теги id отличаются, поэтому, если я буду искать по id в этом коде, он не будет работать для других городов.Я использовал тег Class и смог получить некоторые данные, которые я искал.

Это код, который я придумал. Он вытаскивает в окно сообщения 660 000 долларов.Функция Range работает и выводит данные окна сообщения в Excel.Это натягивает кучу строк, которые я смог вытащить за 660 000 долларов, но как настроено жало Я не уверен, как извлечь оставшиеся данные, например, прогноз на 1 год "yr_forcast" - это диапазон ячеек, который я хочувытащить данные в Excel.Я также собираюсь извлечь оставшиеся цифры из этого окна сообщения для оценочной работы.

Я также включил снимок экрана окна сообщения, чтобы вы могли видеть то, на что я смотрю. Ссылка на скриншот окна сообщения

Sub SearchBot1()

'dimension (declare or set aside memory for) our variables
Dim objIE As InternetExplorer 'special object variable representing the IE browser
Dim aEle As HTMLLinkElement 'special object variable for an <a> (link) element
Dim y As Integer 'integer variable we'll use as a counter
Dim result As String 'string variable that will hold our result link
Dim Doc As HTMLDocument 'holds document object for internet explorer

'initiating a new instance of Internet Explorer and asigning it to objIE
Set objIE = New InternetExplorer

'make IE browser visible (False would allow IE to run in the background)
objIE.Visible = True

'navigate IE to this web page (a pretty neat search engine really)
objIE.navigate "https://www.zillow.com/new-york-ny/home-values/"

'wait here a few seconds while the browser is busy
Do While objIE.Busy = True Or objIE.readyState <> 4: DoEvents: Loop

'in the search box put cell "A2" value, the word "in" and cell "C1" value
objIE.document.getElementById("local-search").Value = _
  Sheets("Sheet2").Range("B3").Value & ", " & Sheets("Sheet2").Range("B4").Value

'click the 'go' button
  Set the_input_elements = objIE.document.getElementsByTagName("button")
  For Each input_element In the_input_elements
   If input_element.getAttribute("name") = "SubmitButton" Then

    input_element.Click
    Exit For
End If
Next input_element

'wait again for the browser
Do While objIE.Busy = True Or objIE.readyState <> 4: DoEvents: Loop

'price for home

 Set Doc = objIE.document
  Dim cclass As String
   cclass = Trim(Doc.getElementsByClassName("value-info-list")(0).innerText)
   MsgBox cclass
    Dim aclass As Variant
    aclass = Split(cclass, " ")
    Range("Market_Price").Value = aclass(0)
    Range("yr_forecast").Value = aclass(5)
 'close the browser
   objIE.Quit
 End Sub

Если вам нужна дополнительная информация, пожалуйста, дайте мне знать.

1 Ответ

0 голосов
/ 26 июня 2018

Вы можете получить данные от потомков элемента, используя Children collection.Первый дочерний узел имеет индекс 0:

cclass = Trim(Doc.getElementsByClassName("value-info-list")(0).Children(0).Children(0).innerText)
...