Как я могу использовать 'getelementsbyclassname', когда есть номер с тем же именем класса? - PullRequest
0 голосов
/ 14 мая 2019

Я пытаюсь проанализировать внутренний текст с помощью getelementsbyclassname в теге 'span'.Но было несколько разных внутренних текстов, которые совпадают с тем же именем класса.Как мне разобрать внутренний текст?

https://finance.naver.com/item/sise_day.nhn?code=063760 -> это документ Internet Explorer, с которого я пытаюсь разобрать.

Я хочуполучите конкретный внутренний текст '15, 550 ', который является вчерашней закрытой рыночной ценой.

введите описание изображения здесь

Ответы [ 2 ]

0 голосов
/ 14 мая 2019

При таргетинге в таблице используйте индексы строк и столбцов с помощью nth-of-type css селектор. Вы хотите 4-й ряд, 2-й столбец. Я использую селекторы CSS как более быстрый метод, учитывая, что современные сайты оптимизированы для этого.

ie.document.querySelector(".type2 tr:nth-of-type(4) td:nth-of-type(2)").innerText

Вы можете просто сократить до

tr:nth-of-type(4) td:nth-of-type(2)

как первая таблица с этой координатой на странице.

Я не вижу ничего полезного, но, возможно, также проверьте API .

0 голосов
/ 14 мая 2019

Попробуйте использовать приведенный ниже пример кода, который может помочь вам найти внутренний текст = 15 550.

Sub demo()
Dim element As IHTMLElement
Dim elements As IHTMLElementCollection
Dim ie As InternetExplorer
Dim val, val1 As String
Dim html As HTMLDocument
val = "15,550"


Set ie = New InternetExplorer

ie.Visible = True

ie.Navigate "https://finance.naver.com/item/sise_day.nhn?code=063760"
'Wait until IE has loaded the web page

Do While ie.ReadyState <> READYSTATE_COMPLETE


DoEvents

Loop

Set html = ie.document

Set elements = html.getElementsByClassName("tah p11")

Dim count As Long
Dim erow As Long
count = 1
For Each element In elements
If element.className = "tah p11" Then
erow = Sheet1.Cells(Rows.count, 1).End(xlUp).Offset(1, 0).Row
val1 = html.getElementsByClassName("tah p11")(count).innerText

If val = val1 Then
Cells(erow, 1) = html.getElementsByClassName("tah p11")(count).innerText

End If
count = count + 1
End If
Next element
End Sub

Выход:

enter image description here

Это просто пример кода для вашей справки. Кроме того, вы можете попытаться изменить код для получения желаемого результата.

...