Używanie Wget do rekurencyjnego indeksowania witryny i pobierania obrazów

12

W jaki sposób instruujesz wget, aby rekurencyjnie indeksował witrynę i pobierał tylko określone typy obrazów?

Próbowałem tego użyć do indeksowania witryny i pobierania tylko obrazów JPEG:

wget --no-parent --wait=10 --limit-rate=100K --recursive --accept=jpg,jpeg --no-directories http://somedomain/images/page1.html

Jednak pomimo tego, że page1.html zawiera setki linków do podstron, które same mają bezpośrednie linki do obrazków, wget zgłasza takie rzeczy jak „Usuwanie podstrony13.html, ponieważ należy ją odrzucić” i nigdy nie pobiera żadnych obrazów, ponieważ żadne nie jest bezpośrednio powiązane z ze strony początkowej.

Zakładam, że dzieje się tak, ponieważ mój --accept jest używany zarówno do kierowania indeksowaniem, jak i filtrowania treści do pobrania, podczas gdy chcę, aby był używany tylko do kierowania pobieraniem treści. Jak sprawić, by wget indeksował wszystkie linki, ale pobierał tylko pliki z określonymi rozszerzeniami, takimi jak * .jpeg?

EDYCJA: Ponadto niektóre strony są dynamiczne i są generowane za pomocą skryptu CGI (np. Img.cgi? Fo9s0f989wefw90e). Nawet jeśli dodam cgi do mojej listy akceptujących (np. --Accept = jpg, jpeg, html, cgi), nadal są one odrzucane. Czy jest na to jakiś sposób?

Cerin
źródło

Odpowiedzi:

3

Dlaczego nie spróbujesz użyć wget -A jpg,jpeg -r http://example.com?

meoninterwebz
źródło
Pytanie mówi, że niektóre obrazy mają postać /url/path.cgi?query, więc twoja sugestia ich nie pobierze.
Charles Stewart
1

W jaki sposób oczekujesz, że wget pozna zawartość podstrony 13.html (a więc pliki jpg, do których prowadzi), jeśli nie można go pobrać. Sugeruję, aby zezwolić na HTML, dostać to, czego chcesz, a następnie usunąć to, czego nie chcesz.


Nie jestem całkiem pewien, dlaczego twoje cgi są odrzucane ... czy wget wyświetla jakieś błędy? Być może wykonaj wget verbose ( -v) i zobacz. Może najlepiej być osobnym pytaniem.

To powiedziawszy, jeśli nie zależy ci na przepustowości i pobieraniu partii, a następnie usuń to, czego później nie chcesz, nie ma to znaczenia.


Sprawdź także --html-extension

Ze strony podręcznika:

-MI

--html-rozszerzenie

Jeśli zostanie pobrany plik typu application / xhtml + xml lub text / html, a adres URL nie kończy się wyrażeniem regularnym. [Hh] [Tt] [Mm] [Ll]?, Ta opcja spowoduje, że przyrostek .html będzie dołączony do lokalnej nazwy pliku. Jest to przydatne na przykład, gdy tworzysz kopię lustrzaną zdalnej witryny, która używa stron .asp, ale chcesz, aby strony lustrzane były widoczne na twoim podstawowym serwerze Apache. Innym dobrym zastosowaniem jest pobieranie materiałów generowanych przez CGI. Adres URL taki jak http://site.com/article.cgi?25 zostanie zapisany jako article.cgi? 25.html.

Pamiętaj, że nazwy plików zmienione w ten sposób będą pobierane ponownie za każdym razem, gdy dublujesz witrynę, ponieważ Wget nie może powiedzieć, że lokalny plik X.html odpowiada zdalnemu adresowi URL X (ponieważ nie wie jeszcze, że adres URL generuje dane wyjściowe typu text / html lub application / xhtml + xml Aby zapobiec ponownemu pobieraniu, musisz użyć -k i -K, aby oryginalna wersja pliku została zapisana jako X.orig.


--restrict-file-names=unix mogą być również przydatne ze względu na te adresy URL cgi ...

PriceChild
źródło
Powinienem przestać łączyć opcje wget .. już miałem wskazać, --no-parentale na tym poprzestanę.
PriceChild 30.03.11
0

Możesz także używać MetaProducts Offline Explorer bez programowania

TiansHUo
źródło
-1

Spróbuj dodać --page-requisitesopcję


źródło
To pobiera wszystkie powiązane media. Jedynym sposobem na użycie wget do pobierania zdjęć jest pobranie całej zawartości strony ?!
Cerin