использование InStr для поиска кавычек, пробелов, двоеточий и т. д. - PullRequest
0 голосов
/ 06 октября 2018

это продолжение этого вопроса очистить данные из источника веб-страницы, где URL-адрес не изменяется

Я сейчас пытаюсь найти очищенные данные и не могучтобы кодировать его правильно, он не находит текст ниже

<span id="middleContent_lbName_county" style="font-weight:bold;">

Я пытался сделать это так

InStr(.Document.Body.innerHTML,"<span id=" & Chr(34) & "middleContent_lbName_county" & Chr(34) & " style=" & Chr(34) & "font-weight" & Chr(58) & "bold" & Chr(59) & "")

и я 'Я получаю 0 взамен.

это работает

InStr(.Document.Body.innerHTML, "<span id=" & Chr(34) & "middleContent_lbName_county")

, но это не достаточно уникально, и я получаю слишком много результатов.

1 Ответ

0 голосов
/ 06 октября 2018

Я немного неясен, но там есть идентификатор, который вы можете использовать, и строка является externalhtml элемента

.document.getElementById("middleContent_lbName_county").outerHTML

Информация внутри:

.document.getElementById("middleContent_lbName_county").innerText

Использованиеэто, .innerText, вернет название учреждения.

С вашим прежним кодом:

Option Explicit
Public Sub VisitPages()
    Dim IE As New InternetExplorer
    With IE
        .Visible = True
        .navigate "http://healthapps.state.nj.us/facilities/acSetSearch.aspx?by=county"

        While .Busy Or .readyState < 4: DoEvents: Wend

        With .document
            .querySelector("#middleContent_cbType_5").Click
            .querySelector("#middleContent_cbType_12").Click
            .querySelector("#middleContent_btnGetList").Click
        End With

        While .Busy Or .readyState < 4: DoEvents: Wend

        Dim list As Object, i  As Long
        Set list = .document.querySelectorAll("#main_table [href*=doPostBack]")
        For i = 0 To list.Length - 1
            list.item(i).Click

            While .Busy Or .readyState < 4: DoEvents: Wend

           ' Application.Wait Now + TimeSerial(0, 0, 3) '<== Delete me later. This is just to demo page changes
                Debug.Print .document.getElementById("middleContent_lbName_county").outerHTML
            'do stuff with new page
            .Navigate2 .document.URL             '<== back to homepage
            While .Busy Or .readyState < 4: DoEvents: Wend
            Set list = .document.querySelectorAll("#main_table [href*=doPostBack]") 'reset list (often required in these scenarios)
        Next
        Stop                                     '<== Delete me later
        '.Quit '<== Remember to quit application
    End With
End Sub

Некоторые примеры результатов:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...