Cómo extraer enlaces de cualquier página web usando PowerShell
PowerShell 3 tiene muchas características nuevas, incluidas algunas funciones nuevas y potentes relacionadas con la web. Simplifican dramáticamente 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 de contenido legible por humanos, y Invoke-RestMethod, que facilita la lectura del contenido legible por máquina. Ya que los enlaces son parte del HTML de una página, son parte de las cosas legibles por humanos. Todo lo que tienes que hacer para obtener una página web es utilizar Invoke-WebRequest y asignarle 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, recibe muchos enlaces de vuelta, aquí es donde debe usar su imaginación para encontrar algo único que filtre los enlaces que está buscando. Supongamos que queremos una lista de todos los artículos en la portada.
((Invoke-WebRequest -Uri 'http://howtogeek.com') .Links | Where-Object $ _. Href -like “http *” | Where class -eq “title”). Título
Otra gran cosa que puedes hacer con los nuevos cmdlets es automatizar las descargas diarias. Veamos cómo se raspa automáticamente la imagen del día en el 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, como “* Descargar Wallpaper *”). Href
Start-BitsTransfer -Source $ IOTD -Destination C: \ IOTD \
Eso es todo al respecto. ¿Tienes algún truco tuyo? Háganos saber en los comentarios..