Cómo extraer enlaces de cualquier página web con PowerShell

imagen

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’

imagen

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

imagen

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

imagen

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.