Здравствуйте!
Прошу помощи в доведении до ума скрипта, который получает по web-ссылке определенные метаданные с web-страницы (если они там есть).
Есть страница вида https://www.elibrary.ru/item.asp?id= (например -
https://www.elibrary.ru/item.asp?id=47557347).
Данные которые требуются:
DOI: 10.17308/lic.2021.4/3805Разумеется, для каждой страницы
https://www.elibrary.ru/item.asp?id= сам
id будет разный.
Эти данные присутствуют не на каждой странице.
Есть вот такой скрипт:
Sub getMetaData()
Dim ie As New InternetExplorer
Dim myLink As String
Dim wks As Worksheet
Set wks = Sheets("LS")
myLink = wks.Range("A1").Value
ie.Visible = True
ie.navigate myLink
Do
DoEvents
Loop Until ie.readyState = READYSTATE_COMPLETE
Const meta_tag As String = "meta"
Const meta_name As String = "doi"
Dim Doc As HTMLDocument
Dim metaElements As Object
Dim element As Object
Dim keywd As String
Set Doc = ie.document
Set metaElements = Doc.all.tags(meta_tag)
For Each element In metaElements
If element.Name = meta_name Then
keywd = element.Content
End If
Next
Range("B1").Value = keywd
Columns("B").AutoFit
End Sub
Скрипт получает данные только по 1 ссылке (в A1) и оставляет результат в B1.
В реальности же, в первом столбике (A) будет много ссылок - от 1 до 100 или больше.
Во втором столбике, соответственно, должны быть получены искомые значения (если есть), а когда этих значений на странице нет - тогда в строке напротив хотелось бы увидеть "нет данных".
p.s. Хотелось бы, чтобы при получении данных, эксель не "бомбил бы" сайт в целях избежания бана (нужен небольшой/вменяемый таймаут перебора страниц).
p.p.s. За "1 заход" требуется получить "пакет данных" с нескольких страниц, на которые можно выйти по ссылке (например)
https://www.elibrary.ru/contents.asp?id=47557346&selid=47557347 (журнал). Внутри неё находятся ссылки вида https://www.elibrary.ru/item.asp?id= у которых меняется только id (статья).
А если уж можно сразу указать ссылку журнала, по которой эксель сможет автоматически пройти на каждую статью и выгрузить значения, - это будет "высший пилотаж". Буду рад любым методическим указаниям.