Użyj skryptu GetElementsByClassName
Próbuję napisać skrypt PowerShell, aby pobrać tekst ze wszystkich klas o nazwie „newstitle” ze strony internetowej.
Oto co mam:
function check-krpano {
$geturl=Invoke-WebRequest http://krpano.com/news/
$news=$geturl.parsedhtml.body.GetElementsByClassName("newstitle")[0]
Write-Host "$news"
}
check-krpano
To oczywiście wymaga znacznie więcej ulepszeń, ale jak dotąd nie działa.
Udało mi się napisać skrypt za pomocą GetElementById, ale nie znam składni GetElementsByClassName i szczerze mówiąc, nie udało mi się znaleźć wielu informacji na ten temat.
UWAGA:
Zaznaczyłem właściwą odpowiedź na moje pytanie, ale to nie jest rozwiązanie, które wybrałem w moim skrypcie.
Chociaż udało mi się znaleźć zawartość w tagu zawierającym określoną klasę, używając 2 metod, były one znacznie wolniejsze niż wyszukiwanie linków.
Oto wyjście za pomocą polecenia Measure-Command:
Wyszukaj div zawierające klasę „newstitle” za pomocą parsedhtml.body -> 29,6 sekundyWyszukaj devów zawierających klasę „newstitle” przy użyciu Allelements -> 10,4 sekundyWyszukaj linki, których element „href” zawiera #news -> 2,4 sekundyTak więc oznaczyłem jako użyteczną odpowiedź metody Links.
To jest mój ostatni skrypt:
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