Я не могу найти это имя класса в html для этого URL. Вы можете использовать селектор css, который я покажу ниже, который можно очистить с помощью xmlhttp и, таким образом, избежать открытия браузера.
Option Explicit
Public Sub GetDate()
Dim html As HTMLDocument
Set html = New HTMLDocument '< VBE > Tools > References > Microsoft Scripting Runtime
With CreateObject("MSXML2.XMLHTTP")
.Open "GET", "https://www.crunchbase.com/organization/verastem#section-overview", False
.send
html.body.innerHTML = .responseText
End With
ActiveSheet.Range("A1") = html.querySelectorAll(".field-type-date.ng-star-inserted").item(1).innerText
End Sub
Если вы не хотите использовать составные классы, вы также можете использовать
ActiveSheet.Range("A1") = html.querySelectorAll("#section-ipo-stock-price .field-type-date").item(1).innerText
Вы можете увидеть соответствующий html здесь:
![введите здесь описание изображения](https://i.stack.imgur.com/pOVUr.png)
Обратите внимание, что элемент имеет несколько (составных) классов.
<span class="component--field-formatter field-type-date ng-star-inserted" title="Jan 27, 2012">Jan 27, 2012</span>
Есть 3 класса component--field-formatter
; field-type-date
и ng-star-inserted
. Я использую два из них в сочетании в первом решении, которое я даю. Несколько классов популярны в наши дни из-за универсальности, которую они дают в стиле страницы, например. это позволяет легко переопределять стили. Вы можете прочитать о css специфичности*, чтобы лучше понять это.
Большее количество классов может означать, что код немного менее надежен, поскольку порядок классов может быть изменен, а класс или несколько могут быть удалены. Это было поднято @SIM в комментарии к ответу на другой вопрос о веб-скрейпинге. Таким образом, я предлагаю одно решение с двумя используемыми классами и другое решение только с одним из используемых классов.
В то время как вы получаете ту же дату для этой страницы просто:
ActiveSheet.Range("A1") = html.querySelector("#section-ipo-stock-price .field-type-date").innerText
Я бы не хотел предполагать, что это всегда будет верно, поскольку он берет дату из строки, где написано "Their stock opened"
.
* https://developer.mozilla.org/en-US/docs/Web/CSS/Specificity
Использованная литература:
- querySelectorAll
- селекторы CSS
person
QHarr
schedule
17.02.2019