2014-11-04 10 views
8

Chcę pobrać zawartość witryny, w której adresy URL są budowane jakoKorzystanie wget ale ignorują parametry URL

http://www.example.com/level1/level2?option1=1&option2=2

w adresie URL tylko http://www.example.com/level1/level2 jest unikalny dla każdej strony, a wartości dla opcja1 i opcja 2 się zmienia. W rzeczywistości każda unikalna strona może zawierać setki różnych notatek ze względu na te zmienne. Używam wget, aby pobrać całą zawartość witryny. Z powodu problemu pobrałem już ponad 3 GB danych. Czy istnieje sposób, aby powiedzieć wget, aby zignorował wszystko, co kryje się pod znakiem zapytania w adresie URL? Nie mogę go znaleźć na stronach man.

+0

Miejmy nadzieję, że URL bez parametru nadal zwróci Ci coś pożytecznego. –

+0

To robi. Nie ma różnicy, czy coś jest za znakiem zapytania, czy nie. Wydaje się śledzić skąd pochodzi przeglądarka. – cootje

+0

Na podstawie strony wget man, w tym momencie nie ma zgodności z ciągami zapytań z wget. Jakiś konkretny powód, aby używać wget, a nie jak scrapy lub curl z odrobiną skryptu powłoki? –

Odpowiedz

0

Problem rozwiązany. Zauważyłem, że adresy URL, że chcę, aby pobrać wszystkie są przyjazne dla wyszukiwarek, gdzie opisy zostały utworzone za pomocą myślnika:

http://www.example.com/main-topic/whatever-content-in-this-page

Wszystkie pozostałe adresy URL miał odniesienia do CMS. Mam wszystko czego potrzebuję z

wget -r http://www.example.com -A "*-*" 

To załatwiło sprawę. Dzięki za dzielenie się myślą!

+0

Cieszę się, że to zadziałało, ale nie jest to rozwiązanie pierwotnego pytania: "Czy istnieje sposób, aby powiedzieć wget, aby zignorował wszystko, co kryje się pod znakiem zapytania w adresie URL?" kenorb dostarczył najlepsze rozwiązanie dla każdego, kto napotkał ten problem. – thinkmassive

7

Można użyć --reject-regex, aby określić wzorzec odrzucania określonych adresów URL, np.

wget --reject-regex "(.*)\?(.*)" -m -c --content-disposition http://example.com/ 

To będzie odzwierciedlać stronę internetową, ale zignoruje adresy oznaczone znakiem zapytania - przydatne do tworzenia lustrzanych stron wiki.

+0

Dziękujemy, jest to najlepsze możliwe rozwiązanie tylko wget (bez udziału dodatkowych narzędzi, takich jak proxy filtrujące). Każda strona HTML jest nadal pobierana jeden raz w celu przeanalizowania linków, ale unika wielokrotnego pobierania + usuwania tego samego łącza za pomocą parametrów GET, takich jak linki nagłówków w liście plików serwera WWW. – thinkmassive