Jak wyodrębnić linki z dowolnej strony internetowej przy użyciu PowerShell
PowerShell 3 ma wiele nowych funkcji, w tym kilka nowych zaawansowanych funkcji związanych z przeglądarką internetową. Drastycznie upraszczają automatyzację sieci, a dzisiaj pokażemy, w jaki sposób można wyodrębnić każdy pojedynczy link ze strony internetowej i opcjonalnie pobrać zasób, jeśli sobie tego życzysz..
Skrobanie sieci za pomocą PowerShell
Istnieją dwa nowe cmdlety, które ułatwiają automatyzację sieci, Invoke-WebRequest, który ułatwia analizowanie treści czytelnej dla człowieka, oraz Invoke-RestMethod, dzięki czemu łatwiej odczytać treści do odczytu maszynowego. Ponieważ linki są częścią HTML strony, są częścią czytelnej dla człowieka rzeczy. Wszystko, co musisz zrobić, aby uzyskać stronę internetową, to użyj Invoke-WebRequest i podaj jej adres URL.
Invoke-WebRequest -Uri 'http://howtogeek.com'
Jeśli przewiniesz w dół zobaczysz, że odpowiedź ma właściwość links, możemy użyć funkcji wyliczania nowych członków PowerShell 3, aby odfiltrować te.
(Invoke-WebRequest -Uri 'http://howtogeek.com') .Links
Jak widzisz, odzyskujesz wiele linków, tutaj musisz użyć wyobraźni, aby znaleźć coś unikalnego, aby odfiltrować szukane linki. Załóżmy, że chcemy listę wszystkich artykułów na pierwszej stronie.
((Invoke-WebRequest -Uri 'http://howtogeek.com') .Links | Where-Object $ _. Href -like "http *" | Where class -eq "title") Tytuł
Kolejną wspaniałą rzeczą, jaką możesz zrobić dzięki nowym cmdletom, jest automatyzacja codziennych pobrań. Spójrzmy na automatyczne zeskrobywanie obrazu dnia z serwisu Nat Geo, aby to zrobić, połączymy nowe cmdlety sieciowe z Start-BitsTransfer.
$ IOTD = ((Invoke-WebRequest -Uri 'http://photography.nationalgeographic.com/photography/photo-of-the-day/').Links | Gdzie innerHTML-like "* Pobierz Wallpaper *"). Href
Start-BitsTransfer -Source $ IOTD -Destination C: \ IOTD \
To wszystko. Czy masz jakieś fajne sztuczki? Daj nam znać w komentarzach.