PowerShell 3 heeft veel nieuwe functies, waaronder enkele krachtige nieuwe webgerelateerde functies. Ze vereenvoudigen het automatiseren van het web drastisch, en vandaag laten we u zien hoe u elke afzonderlijke link van een webpagina kunt extraheren en desgewenst de bron kunt downloaden als u dat wilt.
Het web schrapen met PowerShell
Er zijn twee nieuwe cmdlets die het automatiseren van het web eenvoudiger maken: Invoke-WebRequest, waarmee door mensen leesbare inhoud gemakkelijker kan worden ontleed, en Invoke-RestMethod, waarmee machinaal leesbare inhoud gemakkelijker te lezen is. Omdat links deel uitmaken van de HTML van een pagina, maken ze deel uit van de door mensen leesbare dingen. Het enige dat u hoeft te doen om een webpagina te krijgen, is Invoke-WebRequest gebruiken en deze een URL geven.
Invoke-WebRequest –Uri ‘http://howtogeek.com’
Als u naar beneden scrolt, ziet u dat het antwoord een linkseigenschap heeft, we kunnen de nieuwe ledenlijstfunctie van PowerShell 3 gebruiken om deze eruit te filteren.
(Invoke-WebRequest –Uri ‘http://howtogeek.com’) .Links
Zoals je kunt zien, krijg je veel links terug, dit is waar je je fantasie moet gebruiken om iets unieks te vinden om de links die je zoekt eruit te filteren. Stel dat we een lijst met alle artikelen op de voorpagina willen.
((Invoke-WebRequest –Uri ‘http://howtogeek.com’) .Links | Where-Object {$ _. Href -achtige “http *”} | Where class -eq “title”). Titel
Een ander geweldig ding dat u kunt doen met de nieuwe cmdlets, is het automatiseren van dagelijkse downloads. Laten we eens kijken naar het automatisch schrapen van de afbeelding van de dag van de Nat Geo-website, hiervoor zullen we de nieuwe web-cmdlets combineren met Start-BitsTransfer.
$ IOTD = ((Invoke-WebRequest -Uri ‘http://photography.nationalgeographic.com/photography/photo-of-the-day/’).Links | Where innerHTML -like “* Download Wallpaper *”). Href
Start-BitsTransfer -Source $ IOTD -Destination C: IOTD
Dat is alles wat er is. Heb je zelf nog leuke trucs? Laat het ons weten in de comments.