Slik trekker du ut koblinger fra hvilken som helst nettside ved hjelp av PowerShell
PowerShell 3 har mange nye funksjoner, inkludert noen kraftige nye webrelaterte funksjoner. De forenkler dramatisk automatisering av nettet, og i dag skal vi vise deg hvordan du kan trekke ut hver enkelt kobling fra en nettside, og eventuelt laste ned ressursen hvis du ønsker det.
Skraping av nettet med PowerShell
Det er to nye cmdlets som gjør det enklere å automatisere nettet, Invoke-WebRequest som gjør det enklere å tolke menneskelig lesbart innhold, og Invoke-RestMethod som gjør maskinlesbart innhold lettere å lese. Siden koblinger er en del av HTML-en til en side, er de en del av det menneskelige lesbare materialet. Alt du trenger å gjøre for å få en nettside, er å bruke Invoke-WebRequest og gi den en nettadresse.
Invoke-WebRequest -Uri 'http://howtogeek.com'
Hvis du ruller ned, vil du se svaret har en koblingsegenskap, vi kan bruke PowerShell 3s nye medlemsregistreringsfunksjon for å filtrere disse ut.
(Invoke-WebRequest -Uri 'http://howtogeek.com') .Links
Som du kan se, får du mange lenker tilbake, dette er her du må bruke fantasien din til å finne noe unikt for å filtrere ut koblingene du leter etter. La oss anta at vi vil ha en liste over alle artikler på forsiden.
((Invoke-WebRequest -Uri 'http://howtogeek.com') .Links | Hvor-objekt $ _. Href -like "http *" | Hvor klasse -eq "tittel"). Tittel
En annen flott ting du kan gjøre med de nye cmdlets er automatisere hverdagsnedlastinger. Vi ser på å automatisk skrape bildet av dagen utenfor Nat Geo-nettstedet, for å gjøre dette vil vi kombinere de nye web-cmdletene med Start-BitsTransfer.
$ IOTD = ((Invoke-WebRequest -Uri 'http://photography.nationalgeographic.com/photography/photo-of-the-day/').Links | Where innerHTML -like "* Last ned bakgrunnsbilde *"). Href
Start-BitsTransfer -Source $ IOTD-destinasjon C: \ IOTD \
Det er alt der er til det. Har du noen fine triks? Gi oss beskjed i kommentarene.