1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
#Clase Enlace con información sobre el enlace: URL, tamaño y nivel de recorrido class Enlace { $URL $Long $Level Enlace($URL,$Long,$Level) { $this.URL=$URL $this.Long=$Long $this.Level=$Level } } #Iniciar array $myArray = @() $myArray += [Enlace]::new("https://www.jesusninoc.com/",1,1) #Eliminar el fichero que contiene la expresión que se va a ejecutar rm .\fichero.txt "" | Out-File -FilePath fichero.txt -NoNewline #Crear una función que permite automatizar el recorrido de una web por niveles $url="https://www.jesusninoc.com/" function insertar($numeroveces) { for($i;$i -lt $numeroveces;$i++){'foreach($links'+($i+1)+' in (Invoke-WebRequest $links'+$i+').Links.href){' | Add-Content -Path fichero.txt -NoNewline} 'if(!$myArray.URL.Contains($links'+$numeroveces+')){$myArray += [Enlace]::new($links'+$numeroveces | Add-Content -Path fichero.txt -NoNewline ',(Invoke-WebRequest $links'+$numeroveces+').RawContentLength,' | Add-Content -Path fichero.txt -NoNewline $numeroveces | Add-Content -Path fichero.txt -NoNewline ')' | Add-Content -Path fichero.txt -NoNewline ';start-sleep -s 2' | Add-Content -Path fichero.txt -NoNewline ';$links'+$numeroveces | Add-Content -Path fichero.txt -NoNewline '}' | Add-Content -Path fichero.txt -NoNewline for($j;$j -lt $numeroveces;$j++){"}" | Add-Content -Path fichero.txt -NoNewline} } #Ejecutar la función y leer la información que ha generado la función insertar(1) gc .\fichero.txt #Ejecutar la expresión generada al ejecutar la función que permite automatizar el recorrido de una web por niveles foreach($links in (Invoke-WebRequest $url).Links.href){Invoke-Expression(gc .\fichero.txt)} #Ordenar el array por tamaño $myArray | sort Long |
Resultado de la ejecución del script
Ver el contenido del array con la clase Enlace