Попытка вытащить информацию с веб-страницы - PullRequest
0 голосов
/ 12 октября 2018

Я пытаюсь получить данные с веб-сайта.В моем примере я выполняю поиск на Armorgames.com по поисковому запросу в режиме ожидания.Оттуда я хотел бы вытащить название каждой игры и поместить его в CSV-файл для последующего использования.Мой код:

$SearchResult = Invoke-WebRequest 'http://armorgames.com/search?type=games&q=idle' 
($SearchResult.ParsedHtml.getElementsByTagName('H5') | Where { $_.pathname -like '/play*'})

К сожалению, это не даст никаких результатов.Я могу видеть имена свойств, используя:

$SearchResult.ParsedHtml.getElementsByTagName('H5')

Используя тег 'a', я могу найти игры с путем, содержащим 'play'. Но у меня возникают проблемы с фильтрацией результатов, а затем вывод результатов вфайл

Ответы [ 2 ]

0 голосов
/ 16 октября 2018

Кодирование веб-страниц, совместимое с PowerShell Core (v6.0), которое также должно работать с Windows PowerShell, зависит от регулярного выражения с оператором -match (так как свойство ParsedHtml недоступно в Core):

$SearchResult = Invoke-WebRequest 'http://armorgames.com/search?type=games&q=idle'
$GameNames = ($SearchResult.Content.split('<') | 
    where {$_ -match '^a href.*play.*\ title=.*>[A-Z].*'}) -replace '.*>'
$GameNames

Вывод выглядит следующим образом:

Artist Idle
Hero Simulator: Idle Adventures
Idle Farmer
Idle Online Universe
Idle Sword
Idle Web Tycoon
Legendary Journey Idle
NGU IDLE
Religious Idle
Zombidle

Теперь, когда у вас есть массив имен, которые вы хотите, вы сможете создавать CSV с любой дополнительной информацией, которую вынеобходимо.

0 голосов
/ 12 октября 2018
$SearchResult.ParsedHtml.getElementsByTagName('a') | where-Object -Property pathname -Like 'play/*'

# select property pathname
$SearchResult.ParsedHtml.getElementsByTagName('a') | 
    Where-Object -Property pathname -Like 'play/*' |
        Select-Object -Property pathname

# select property title
$SearchResult.ParsedHtml.getElementsByTagName('a') | 
    Where-Object -Property pathname -Like 'play/*' |
        Select-Object -Property title -Unique
...