Последняя строка неверна / пустые строки, если запись существует в списке - PullRequest
0 голосов
/ 09 мая 2020

Какова моя цель: Создание списка записей с помощью webScapring. Скребок отлично работает и создает список. Он проверяет, существует ли значение. Только если значение не существует, оно будет добавлено в список. Список будет постоянно расширяться.

Ожидаемый результат: Если значение существует в списке, оно будет пропущено. Если значение не существует, оно будет записано в следующей свободной строке без свободных строк.

Фактический результат: Это делает для каждого существующего значения пустую строку. Например, если все еще существует 4 значения, создается 4 пустых строки.

Явная опция

Sub ExposeID()

Dim browser As Object   'Aufnehmen der verwendeten Instanz des Browsers (Internet Explorer)
Dim knotenAst As Object 'Aufnehmen einer HTML Struktur aus dem Browser Dokument
Dim n As Integer
Dim url As String       'Aufnehmen der auszulesenden Adresse

Dim ExposeID As String
Dim letztezeile As Integer
Dim nodeList As Object, i As Long

Dim ZählerÜbersprungen As Integer
ZählerÜbersprungen = 0
Dim ZählerHinzugefügt As Integer
ZählerHinzugefügt = 0

Set browser = CreateObject("internetexplorer.application")
    browser.Visible = False

For n = 0 To 1

    url = "https://www.immobilienscout24.de/Suche/de/niedersachsen/oldenburg-oldenburg/haus-kaufen?pagenumber=" & n + 1
    browser.navigate url
    Do Until browser.readyState = 4: DoEvents: Loop

    letztezeile = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row

Set nodeList = browser.document.querySelectorAll(".result-list__listing[data-id]")
For i = 0 To nodeList.Length - 1

Dim FindString As String
Dim Rng As Range
FindString = nodeList.Item(i).getAttribute("data-id")
If Trim(FindString) <> "" Then
    With Sheets("IDs").Range("A:A") 'searches all of column A
        Set Rng = .Find(What:=FindString, _
                        After:=.Cells(.Cells.Count), _
                        LookIn:=xlValues, _
                        LookAt:=xlWhole, _
                        SearchOrder:=xlByRows, _
                        SearchDirection:=xlNext, _
                        MatchCase:=False)
        If Not Rng Is Nothing Then
        ZählerÜbersprungen = ZählerÜbersprungen + 1
        Else
          Cells(letztezeile + i + 1, 1) = nodeList.Item(i).getAttribute("data-id")
        ZählerHinzugefügt = ZählerHinzugefügt + 1
        End If
    End With
End If

Next i
Next n

Set nodeList = Nothing

i = 0
n = 0

browser.Quit

MsgBox "Es wurden " & ZählerHinzugefügt & " Einträge hinzugefügt." & vbCrLf & "Es wurden " & ZählerÜbersprungen & " Einträge übersprungen.", vbOKOnly

ZählerÜbersprungen = 0
ZählerHinzugefügt = 0

End Sub
...