getElementsBy возвращая пустые значения с помощью VBA - PullRequest
0 голосов
/ 27 мая 2020

Первая публикация в Stack Overflow и начинающий кодировщик VBA.

Я написал код на VBA для очистки данных с веб-сайта. Я могу получить всю необходимую мне информацию, кроме одного элемента, который по какой-то причине продолжает возвращать пустое значение, когда я использую Debug.Print

Код HTML и URL-адрес, который я не могу извлечь, следующее: URL: linkedin.com/school/mcgill-university/people/?keywords=zkzk

<div class="container p0">
    <div class="display-flex full-width justify-space-between align-items-center pt5 ph5">
      <span class="t-20 t-black">
          0 alumni
      </span>

Я хотел бы распечатать «0 выпускников», поэтому я написал следующий код VBA:

Dim aEle As Object
Dim Number As String
Dim objIE As InternetExplorer

Number = aEle.objIE.document.getElementsByClassName("display-flex full-width justify-space-between 
         align-items-center pt5 ph5").getElementsByTagName("span")(0).innerText
         Debug.Print Number

Но все, что я получаю, это пустое значение ( т. е. ничего не отображается в непосредственном окне, и когда я наводю курсор на (Число), отображается значение как "")

Работающая часть кода HTML следующая:

<div id="ember1418" class="org-people-profile-card ember-view">
<section id="ember1419" class="artdeco-card artdeco-card--with-hover ember-view"><!---->
  <div class="org-people-profile-card__profile-info">
<div id="ember1425" class="artdeco-entity-lockup__title ember-view">
<a data-control-name="people_profile_card_name_link" href="/in/x-060210b2/" id="ember1426" class="link-without-visited-state ember-view">
<div id="ember1427" 
class="org-people-profile-card__profile-title t-black lt-line-clamp lt-line-clamp--single-line ember-view">  jane doe

<!----></div>
</a>

И код VBA, который я написал для распечатки «jane doe», выглядит следующим образом:

For Each aEle In objIE.document.getElementsByClassName("org-people-profile-card ember-view")

            Name = aEle.getElementsByClassName("artdeco-entity-lockup__title ember-view")(0).innerText
                Debug.Print Name 
Next

Jane Doe распечатывает как ожидалось.

Меня смущает несоответствие; хотя они оба являются элементами класса, содержащими внутренний текст, и я использую одну и ту же команду VBA "getElementsbyClassName", один работает, а другой нет? Есть ли что-то особенное в первом разделе кода HTML? Нужно ли мне изменять код VBA, чтобы можно было распечатать «0 выпускников»?

PS Я сократил исходный код VBA и включил только те части, которые имеют отношение к вопросу.

1 Ответ

0 голосов
/ 27 мая 2020

Попробуйте эту строку

Number = Split(aEle.objIE.document.querySelector(".container div span").innerText, " ")(0)

Эта строка отлично работала для меня

Debug.Print .document.querySelector(".container div span").innerText
...