PowerShell 3 tiene muchas funciones nuevas, incluidas algunas funciones nuevas y potentes relacionadas con la web. Simplifican drásticamente la automatización de la web, y hoy le mostraremos cómo puede extraer cada enlace de una página web y, opcionalmente, descargar el recurso si así lo desea.
Raspando la Web con PowerShell
Hay dos nuevos cmdlets que facilitan la automatización de la web, Invoke-WebRequest, que facilita el análisis del contenido legible por humanos, e Invoke-RestMethod, que facilita la lectura del contenido legible por máquina. Dado que los enlaces son parte del HTML de una página, son parte del material legible por humanos. Todo lo que tiene que hacer para obtener una página web es usar Invoke-WebRequest y darle una URL.
Invoke-WebRequest –Uri ‘http://howtogeek.com’
Si se desplaza hacia abajo, verá que la respuesta tiene una propiedad de enlaces, podemos usar la nueva función de enumeración de miembros de PowerShell 3 para filtrarlos.
(Invoke-WebRequest –Uri ‘http://howtogeek.com’). Enlaces
Como puede ver, obtiene muchos enlaces, aquí es donde necesita usar su imaginación para encontrar algo único para filtrar los enlaces que está buscando. Supongamos que queremos una lista de todos los artículos en la página principal.
((Invoke-WebRequest –Uri ‘ http://howtogeek.com’) .Links | Where-Object {$ _. Href -like “http *”} | Where class -eq “title”). Título
Otra gran cosa que puede hacer con los nuevos cmdlets es automatizar las descargas diarias. Veamos cómo raspar automáticamente la imagen del día fuera del sitio web de Nat Geo, para ello combinaremos los nuevos cmdlets web con Start-BitsTransfer.
$ IOTD = ((Invoke-WebRequest -Uri ‘ http://photography.nationalgeographic.com/photography/photo-of-the-day/’).Links | Where innerHTML -like “* Download Wallpaper *”). Href
Start -BitsTransfer -Fuente $ IOTD -Destino C: \ IOTD \
Eso es todo al respecto. ¿Tienes algunos buenos trucos propios? Háznoslo saber en los comentarios.