Просто чтобы получить квалификацию hrefs
, которую вы упомянули по указанному URL, я бы использовал следующее.Он использует комбинацию селекторов CSS для нацеливания на URL-адреса, представляющие интерес с указанной страницы.
Комбинация селекторов CSS:
#bm_ajax_container [href^='/market/listed-companies/company-announcements/']
Это селектор потомков , ищущийэлементы с атрибутом href
, значение которых начинается с /market/listed-companies/company-announcements/
, и имеющие родительский элемент с идентификатором bm_ajax_container
.Этот родительский элемент является контейнером ajax."#"
является селектором идентификатора, а « [] » обозначает селектор атрибута."^"
означает, что начинается с.
Пример контейнера div и первого соответствующего href:

Поскольку более одного элементадля сопоставления комбинация селекторов CSS применяется с помощью метода querySelectorAll
.Это возвращает nodeList
, чей .Length
может быть пройден для доступа к отдельным элементам по индексу.
Полный набор соответствующих ссылок записан на листе.
Пример результатов CSS-запроса со страницы с использованием селектора (образец):

VBA:
Option Explicit
Public Sub GetInfo()
Dim IE As New InternetExplorer
Application.ScreenUpdating = False
With IE
.Visible = True
.navigate "http://www.bursamalaysia.com/market/listed-companies/company-announcements/#/?category=SH&sub_category=all&alphabetical=All"
While .Busy Or .readyState < 4: DoEvents: Wend
Dim links As Object, i As Long
Set links = .document.querySelectorAll("#bm_ajax_container [href^='/market/listed-companies/company-announcements/']")
For i = 0 To links.Length - 1
With ThisWorkbook.Worksheets("Sheet1")
.Cells(i + 1, 1) = links.item(i)
End With
Next i
.Quit
End With
Application.ScreenUpdating = True
End Sub