O PowerShell 3 tem muitos recursos novos, incluindo alguns novos recursos poderosos relacionados à web. Eles simplificam drasticamente a automação da web, e hoje vamos mostrar como você pode extrair cada link de uma página da web e, opcionalmente, fazer o download do recurso, se desejar.
Raspando a Web com PowerShell
Existem dois novos cmdlets que tornam a automação da web mais fácil, Invoke-WebRequest, que torna a análise de conteúdo legível por humanos mais fácil, e Invoke-RestMethod, que torna o conteúdo legível por máquina mais fácil de ler. Uma vez que os links são parte do HTML de uma página, eles são parte do material legível por humanos. Tudo que você precisa fazer para obter uma página da web é usar Invoke-WebRequest e fornecer um URL a ela.
Invoke-WebRequest –Uri ‘http://howtogeek.com’
Se você rolar para baixo, verá que a resposta tem uma propriedade de links, podemos usar o novo recurso de enumeração de membro do PowerShell 3 para filtrá-los.
(Invoke-WebRequest –Uri ‘http://howtogeek.com’) .Links
Como você pode ver, você recebe muitos links de volta, é aqui que você precisa usar sua imaginação para encontrar algo único para filtrar os links que está procurando. Vamos supor que queremos uma lista de todos os artigos na primeira página.
((Invoke-WebRequest –Uri ‘ http://howtogeek.com’) .Links | Where-Object {$ _. Href -like “http *”} | Where class -eq “title”). Title
Outra grande coisa que você pode fazer com os novos cmdlets é automatizar os downloads diários. Vejamos como raspar automaticamente a imagem do dia do site Nat Geo, para fazer isso vamos combinar os novos cmdlets da web com Start-BitsTransfer.
$ IOTD = ((Invoke-WebRequest -Uri ‘ http://photography.nationalgeographic.com/photography/photo-of-the-day/’).Links | Onde innerHTML -like “* Baixar papel de parede *”). Href
Iniciar -BitsTransfer -Fonte $ IOTD -Destino C: \ IOTD \
Isso é tudo que há para fazer. Você tem seus próprios truques legais? Deixe-nos saber nos comentários.