
В #PowerShell легко проверить, есть ли в массиве конкретное значение:
$a = 1,2,3
$a.Contains(2) # содержит?
True
!$a.Contains(2) # не содержит?
FalseЯ не планировал так быстро возвращаться к теме парсинга веб-страниц, но для бота мне понадобилось собрать ссылки на все посты канала. Понятно, что они начинаются с
https://t.me/sterkin_ru/1 и увеличиваются инкрементно. Но часть постов была удалена (неактуальность, ошибочный постинг), а битые ссылки не нужны.Иду по ссылке в браузере и смотрю исходный код страницы. Если поста по ссылке нет, сервис
t.me отдает описание канала. Сравниваю с исходным кодом любого поста и ищу отличия. В описании канала упомянут чат @winsiders, что в исходном коде выглядит как https://t.me/winsiders (этого, кстати, не происходит при таком упоминании чата в тексте поста).Поэтому в данном случае достаточно выбрать страницы, где в массиве ссылок не содержится ссылка на чат. Дальше уже знакомый вам Invoke-WebRequest. К сожалению, при публикации в канал код некорректно обрабатывается поэтому ссылки на Pastebin и скрипт в архиве
¯\_(ツ)_/¯950..955 - для примера на случай, если вы будете проверять:) На практике я использовал 1..999, т.к. последний на тот момент пост был за номером 999. Это - оператор range, попробуйте в консоли 1..5 | %{$_}В итоге из 1000 ссылок по факту отсутствовали 10% ✌️














