Jak wyodrębnić wszystkie zewnętrzne linki strony internetowej? [duplikować]

3

Jak wyodrębnić wszystkie zewnętrzne linki strony internetowej i zapisać je w pliku?

Jeśli są jakieś narzędzia wiersza poleceń, które byłyby świetne.

To było to samo pytanie tutaj , a odpowiedź sprawnie działała dla google.com, ale z jakiegoś powodu nie działa z np. youtube. Wyjaśnię: weźmy na przykład ta strona . Jeśli spróbuję uciekać

lynx -dump http://www.youtube.com/playlist?list=PLAA9A2EFA0E3A2039&feature=plcp | awk '/http/{print $2}' | grep watch > links.txt

następnie, w przeciwieństwie do używania go na google.com najpierw wykonuje zrzut Lynx, a następnie daje kontrolę do awk (z jakiegoś powodu z pustym wejściem), a na koniec nic nie zapisuje w pliku links.txt. Dopiero po tym wyświetli się niefiltrowany zrzut rysia, bez możliwości przeniesienia go gdzie indziej.

Z góry dziękuję!

whoever
źródło
Gdzieś zobaczyłem wzmiankę o komendzie "pies", która może zrobić to samo, ale nie udało jej się znaleźć tego gdzie indziej.
whoever

Odpowiedzi:

2
lynx -dump 'http://www.youtube.com/playlist?list=PLAA9A2EFA0E3A2039&feature=plcp' | awk '/http/{print $2}' | grep watch > links.txt

Prace. Musisz uciec & w linku.

W twojej pierwotnej linii nie ma zmiany & rzuci Lynxa w tło, pozostawiając puste wejście dla links.txt. Proces w tle nadal będzie zapisywał dane wyjściowe do terminalu, w którym się znajdujesz, ale jak zauważyłeś, nie zrobi tego > przekierowanie (niejednoznaczność: który proces powinien zapisywać do pliku?).

Uzupełnienie: Zakładam literówkę w twoim pierwotnym rozkazie: początek i koniec ' nie powinno być obecne. W przeciwnym razie pojawią się inne komunikaty o błędach, które próbują wykonać nieistniejące polecenie. Ich usunięcie daje zachowanie, które opisujesz.

Daniel Andersson
źródło
Dzięki wielkie! Nienawidzę siebie za bycie tak początkującym. Ale w sumie 2 tygodnie korzystania z Linuksa to nie czas, tak? Jeszcze raz dziękuję.
whoever
@ user1212010: Ta strona opiera się na pytającym, aby oznaczyć odpowiedź jako poprawną, jeśli czuje, że rozwiązał problem. Sprawdzanie go jako takiego jest najlepszym sposobem, aby powiedzieć "Dzięki" na SU :-).
Daniel Andersson
0

Użyj swojej ulubionej strony i wyszukaj "skrypt skrobaczki internetowej" lub "skrypt skrobania strony" i jakikolwiek język programowania, który najbardziej Ci odpowiada. Masz tysiące opcji, więc możesz wykonać najdokładniejsze wyszukiwanie.

MoniGarr
źródło
0

Chociaż istnieje wiele opcji do wyboru, polecam używanie Pythona z BeautifilSoup - to da ci całkowitą kontrolę nad procesem, w tym następujące przekierowania, obsługę certyfikatów SSL z podpisem własnym / wygasłym, pracę nad nieprawidłowym kodem HTML, wyodrębnianie linków tylko z określone bloki strony itp.

Dla przykładu sprawdź ten wątek: https://stackoverflow.com/questions/1080411/retrieve-links-from-web-page-using-python-and-beautiful-soup

Instalacja BeautifulSoup jest tak banalna jak uruchomienie pip install BeautifilSoup lub easy_install BeautifilSoup jeśli jesteś na Linuksie. Na Win32 jest prawdopodobnie najłatwiejszy w użyciu instalatory binarne .

ccpizza
źródło