Я пытаюсь написать PowerShell script, чтобы получить текст во всех классах с именем "newstitle" с веб-сайта.
Это то, что у меня есть:
function check-krpano {
$geturl=Invoke-WebRequest http://krpano.com/news/
$news=$geturl.parsedhtml.body.GetElementsByClassName("newstitle")[0]
Write-Host "$news"
}
check-krpano
Очевидно, что требуется гораздо больше настроек, но пока это не работает.
Мне удалось написать script с помощью GetElementById, но я не знаю синтаксиса для GetElementsByClassName, и, честно говоря, я не смог найти много информации об этом.
Примечание:
Я поставил правильный ответ на мой вопрос, но это не то решение, которое я выбрал для использования в script.
Хотя мне удалось найти содержимое в теге, содержащем определенный класс, используя 2 метода, они были намного медленнее, чем поиск ссылок.
Вот результат с использованием Measure-Command:
- Искать divs, содержащие класс 'newstitle', используя parsedhtml.body → 29.6 секунд
- Поиск разработчиков, содержащих класс 'newstitle', используя Allelements → 10.4 секунд
- Поиск ссылок, которые содержит его элемент 'href' #news → 2.4 секунды
Итак, я пометил как полезный ответ метода Links.
Это мой последний script:
function check-krpano {
Clear-Host
$geturl=Invoke-WebRequest http://krpano.com/news
$news = ($geturl.Links |Where href -match '\#news\d+' | where class -NotMatch 'moreinfo+' )
$news.outertext | Select-Object -First 5
}
check-krpano