Hur man extraherar länkar från vilken webbsida som helst med hjälp av PowerShell
PowerShell 3 har många nya funktioner, inklusive några kraftfulla nya webbrelaterade funktioner. De förenklar dramatiskt automatiseringen av webben, och idag kommer vi att visa hur du kan extrahera varje enskild länk från en webbsida och eventuellt ladda ner resursen om du så önskar.
Skrapning av webben med PowerShell
Det finns två nya cmdlets som gör det enklare att automatisera webben, Invoke-WebRequest som gör det enklare att analysera det mänskliga läsbara innehållet, och Invoke-RestMethod som gör att maskinläsbart innehåll lättare kan läsas. Eftersom länkar är en del av HTML-en till en sida är de en del av de mänskliga läsbara sakerna. Allt du behöver göra för att få en webbsida är att använda Invoke-WebRequest och ge den en URL.
Invoke-WebRequest -Uri 'http://howtogeek.com'
Om du rullar ner ser du svaret har en länkegenskap, vi kan använda PowerShell 3s nya medlemsuppräkning för att filtrera ut dessa.
(Invoke-WebRequest -Uri 'http://howtogeek.com') .Links
Som du kan se får du många länkar tillbaka, det är här du behöver använda din fantasi för att hitta något unikt för att filtrera bort länkarna du letar efter. Låt oss anta att vi vill ha en lista över alla artiklar på framsidan.
((Invoke-WebRequest -Uri 'http://howtogeek.com') .Links | Where-Object $ _. Href -like "http *" | Var klass -eq "title"). Titel
En annan bra sak du kan göra med de nya cmdletsna är att automatisera dagliga nedladdningar. Låt oss se på att automatiskt skrapa bilden av dagen utanför Nat Geos webbplats, för att göra detta kombinerar vi de nya webb-cmdlets med Start-BitsTransfer.
$ IOTD = ((Invoke-WebRequest -Uri 'http://photography.nationalgeographic.com/photography/photo-of-the-day/').Links | Where innerHTML -like "* Ladda ner bakgrundsbilder *"). Href
Start-BitsTransfer -Source $ IOTD -Destination C: \ IOTD \
Det är allt som finns där. Har du några snygga knep? Låt oss veta i kommentarerna.