Cómo extraer enlaces de cualquier página web usando PowerShell
PowerShell 3 ofrece muchas funciones nuevas, incluidas algunas funciones nuevas y potentes relacionadas con la web. Hacen que la automatización web sea mucho más fácil, y hoy le mostraremos cómo extraer cada enlace de una página web y, opcionalmente, descargar el recurso si lo desea.
Raspando la Web con PowerShell
Hay dos nuevos cmdlets que facilitan la automatización web, Invoke-WebRequest, que facilita el análisis de contenido legible por humanos, e Invoke-RestMethod, que facilita la lectura del contenido legible por máquina. Dado que los enlaces son parte del código HTML de una página, son parte de elementos legibles 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 debe 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 primera página.
((Invoke-WebRequest –Uri ‘http://howtogeek.com ‘). Enlaces | Where-Object {$ _. Href -like «http *»} | Donde clase -eq «título»). Título
Otra gran cosa que puede hacer con los nuevos cmdlets es automatizar las descargas diarias. Echemos un vistazo a la imagen del día que se raspa automáticamente en el sitio web de Nat Geo. Para hacer esto, combinaremos los nuevos cmdlets web con Start-BitsTransfer.
$ IOTD = ((Invocar-WebRequest -Uri ‘http://photography.nationalgeographic.com/photography/photo-of-the-day/ ‘). Enlaces | Donde innerHTML -como «* Descargar fondo de pantalla *»). Href
Inicio-BitsTransfer -Fuente $ IOTD -Destino C: IOTD
Eso es todo lo que podemos decir al respecto. ¿Tienes algo interesante? Háznoslo saber en los comentarios.