Як завантажити всі файли (але не HTML) з веб-сайту за допомогою wget?


162

Як використовувати wgetта отримувати всі файли з веб-сайту?

Мені потрібні всі файли, крім файлів веб-сторінок, таких як HTML, PHP, ASP тощо.


Навіть якщо ви хочете завантажити php, користуватися wget неможливо. Ми можемо отримати лише сирий HTML за допомогою wget. Я думаю, ви знаєте причину
Venkateshwaran Selvaraj

Примітка: Завжди перевіряйте wget --spiderспочатку і завжди додайте -w 1(або більше -w 5), щоб не затопити сервер іншої людини.
ізоморфізми

1
Як я можу завантажити всі файли PDF на цій сторінці? pualib.com/collection/pua-titles-a.html

Переповнення стека - це сайт для програмування та питань розробки. Це питання видається поза темою, оскільки мова не йде про програмування чи розробку. Дивіться, які теми я можу запитати тут, у довідковому центрі. Можливо, краще користуватися питаннями Super User або Unix & Linux Stack Exchange . Також див. Де я публікую запитання про Dev Ops?
jww

Відповіді:


262

Щоб відфільтрувати конкретні розширення файлів:

wget -A pdf,jpg -m -p -E -k -K -np http://site/path/

Або, якщо ви віддаєте перевагу довгі імена варіантів:

wget --accept pdf,jpg --mirror --page-requisites --adjust-extension --convert-links --backup-converted --no-parent http://site/path/

Це відобразить сайт, але файли без jpgабо pdfрозширення будуть автоматично видалені.


17
Якщо ви просто хочете завантажити файли без цілої архітектури каталогів, ви можете скористатися опцією -nd .
diabloneo

4
що означає кожен із прапорів?
Юрген Пол

Я думаю, що --acceptце --accept pdf,jpg,PDF,JPG
враховує регістри

8
не впевнений, що це з новою версією, wgetале вам потрібно вказати --progressтип, наприклад--progress=dot
jamis

@Flimm ви також можете використовувати --ignore-caseпрапор, щоб зробити --acceptрегістр нечутливим.
Суворий

84

Це завантажило для мене весь веб-сайт:

wget --no-clobber --convert-links --random-wait -r -p -E -e robots=off -U mozilla http://site/path/

20
+1 для -e robots=off! Це остаточно вирішило мою проблему! :) Дякую
NHDaly

12
--random-waitВаріант геній;)
poitroae

2
@izilotti Чи може власник сайту дізнатись, чи ЗАПРОБУЮТЬ їх файли сайту цим методом?
Elias7

1
@whatIsperfect Це безумовно можливо.
Джек

1
@JackNicholsonn Як дізнається власник сайту? Використовуваний агент був Mozilla, а це означає, що всі заголовки будуть входити як браузер Mozilla, таким чином виявити wget як використаний було б неможливо? Будь ласка, виправте, якщо я помиляюся. дякую
KhoPhi

63
wget -m -p -E -k -K -np http://site/path/

Сторінка man розповість вам, що ці варіанти роблять.

wgetбуде переходити лише за посиланнями, якщо немає посилання на файл із індексної сторінки, то wgetвін не буде знати про його існування, а значить, не завантажуватиме його. тобто. це допомагає, якщо всі файли пов'язані з веб-сторінками або в каталогах каталогів.


Дякую за відповідь :) Він копіює весь сайт, і мені потрібні лише файли (тобто txt, pdf, зображення тощо) на веб-сайті
Aniruddhsinh

25

Я намагався завантажити поштові файли, пов’язані зі сторінки тем Omeka - досить схоже завдання. Це працювало для мене:

wget -A zip -r -l 1 -nd http://omeka.org/add-ons/themes/
  • -A: приймає тільки поштові файли
  • -r: рекурс
  • -l 1: глибокий рівень (тобто лише файли, безпосередньо пов’язані з цією сторінкою)
  • -nd: не створюйте структури каталогів, просто завантажте всі файли в цей каталог.

Всі відповіді з -k, -K, і -Eт.д. варіанти , ймовірно, не дуже зрозумів питання, як і ті , як і для перезапису HTML - сторінок , щоб зробити локальну структуру, перейменувавши.php файлів і так далі. Не стосується.

Щоб буквально отримати всі файли, крім .html тощо:

wget -R html,htm,php,asp,jsp,js,py,css -r -l 1 -nd http://yoursite.com

2
-AДумаю, що це стосується регістру, я думаю, тому вам доведеться це зробити-A zip,ZIP
Flimm

7

Ви можете спробувати:

wget --user-agent=Mozilla --content-disposition --mirror --convert-links -E -K -p http://example.com/

Також ви можете додати:

-A pdf,ps,djvu,tex,doc,docx,xls,xlsx,gz,ppt,mp4,avi,zip,rar

прийняти конкретні розширення або відхилити лише певні розширення:

-R html,htm,asp,php

або виключити конкретні області:

-X "search*,forum*"

Якщо файли ігноруються для роботів (наприклад, пошукових систем), потрібно також додати: -e robots=off




Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.