Я немного перебираю паутину с помощью Powershell. На сайте был элемент с кодом, подобным следующему:
<h1 class="">1001 Nights <span id="titleYear">(<a href="/year/1968/?ref_=tt_ov_inf">1968</a>)</span> </h1>
И я хочу извлечь текст внутри, этот текст:
1001 Nights
, но не этот текст:
<span id="titleYear">(<a href="/year/1968/?ref_=tt_ov_inf">1968</a>)</span>
А селектор CSS на сайте выглядит примерно так:
"#title-overview-widget > div.vital > div.title_block > div > div.titleBar > div.title_wrapper > h1"
Выполняя поиск по переполнению стека, я нашел код задания, как показано ниже.
$Result = Invoke-WebRequest -Uri "https://www.imdb.com/title/tt0062940/?ref_=ttls_li_tt"
$movieTitleSelector = "#title-overview-widget > div.vital > div.title_block > div > div.titleBar > div.title_wrapper > h1"
$NodeList = $Result.ParsedHtml.querySelectorAll( $movieTitleSelector)
$PsNodeList = @()
for ($i = 0; $i -lt $NodeList.Length; $i++) {
$PsNodeList += $NodeList.item($i)
}
$PsNodeList | ForEach-Object {
$_.InnerText
}
И результат:
1001 Nights (1968)
"1001 Nights" - это заголовок mov ie, а "1968" - год выпуска, который был включен в <span></span>
. Я просто хочу заглавную часть, а не год выпуска. Я обнаружил некоторый код в переполнении стека, в котором говорится, что я могу выбирать только текст в теге <h1>
, а не внутри <span>
, изменив код в тексте выше на:
$movieTitleSelector = "#title-overview-widget > div.vital > div.title_block > div > div.titleBar > div.title_wrapper > h1 :not(span)"
Но при запуске код, он выдает ошибку
Invalid argument.
At line:1 char:1
+ $NodeList = $Result.ParsedHtml.querySelectorAll( "#title-overview-wi ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : OperationStopped: (:) [], ArgumentException
+ FullyQualifiedErrorId : System.ArgumentException
. Я думаю, что ошибка произошла, потому что в строке $ movieTitleSelector было двоеточие, но я не очень уверен. Кто-нибудь, пожалуйста, скажите мне, как я могу получить текст заголовка в элементе <h1>
, но не внутри тега <span>
. Спасибо.