Use GetElementsByClassName em um script
Eu estou tentando escrever um script do PowerShell para obter o texto dentro de todas as classes chamadas "newstitle" de um site.
Isso é o que eu tenho:
function check-krpano {
$geturl=Invoke-WebRequest http://krpano.com/news/
$news=$geturl.parsedhtml.body.GetElementsByClassName("newstitle")[0]
Write-Host "$news"
}
check-krpano
Obviamente precisa de muito mais ajustes, mas até agora não funciona.
Eu consegui escrever um script usando GetElementById, mas não sei a sintaxe de GetElementsByClassName e, para ser honesto, não consegui encontrar muita informação sobre isso.
NOTA:
Eu marquei a resposta certa para a minha pergunta, mas essa não é a solução que eu escolhi para usar no meu script.
Embora eu fosse capaz de encontrar o conteúdo dentro de uma tag contendo uma determinada classe, usando 2 métodos, eles eram muito mais lentos que procurar por links.
Aqui está a saída usando Measure-Command:
Procure por divs contendo a classe 'newstitle' usando parsedhtml.body -> 29,6 segundosProcure por devs contendo a classe 'newstitle' usando Allelements -> 10.4 segundosPesquise por links cujo elemento 'href' contenha #news -> 2,4 segundosEntão eu marquei como útil a resposta do método Links.
Este é meu script final:
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