Wget не будет рекурсивно загружать

Я пытаюсь скопировать поток форума с этой структурой каталогов:

На первой странице есть URL-адрес:

https://some.site.com/foo/bar/threadNumber 

Остальные страницы следуют этому формату:

 https://some.site.com/foo/bar/threadNumber/page/2 https://some.site.com/foo/bar/threadNumber/page/3 https://some.site.com/foo/bar/threadNumber/page/* 

Я использую команду:

 wget --recursive --page-requisites --adjust-extension --no-parent --convert-links https://some.site.com/foo/bar/threadNumber 

Эта команда может скопировать любой простой URL-адрес. Однако я хочу добавить более высокий каталог и получить все файлы /page/* . Мне не нужны более высокие каталоги и ничего, кроме нижних /page/ файлов. Я также бросил – --mirror .

Любые идеи, почему эта команда не собирается загружать оставшиеся страницы?

3 Solutions collect form web for “Wget не будет рекурсивно загружать”

Рекурсивно загружает ссылки с проверкой безопасности, что приводит к перенаправлению цикла.

Команда не работает, потому что ваш сайт использует двойное перенаправление, которое смущает wget. Давайте посмотрим на подробный журнал, который можно вызвать с помощью опции --debug (удаленные строки удалены):

 ---request begin--- GET /<URL> HTTP/1.1 ---response begin--- HTTP/1.1 302 Found Location: https://community.lego.com/auth/securityCheck?action=bounce&referrer=https%3A%2F%2Fcommunity.lego.com%2F<URL> (...) ---request begin--- GET /auth/securityCheck?referrer=https%3A%2F%2Fcommunity.lego.com%2F<URL> HTTP/1.1 ---response begin--- HTTP/1.1 302 Found Location: https://community.lego.com/<URL> (...) Deciding whether to enqueue "https://community.lego.com/<URL>". Already on the black list. Decided NOT to load it. Redirection "https://community.lego.com/<URL>" failed the test. 

Как видно, он отскакивает ваш запрос на некоторые «проверки безопасности» и обратно. Wget не ожидает, что вторично перенаправляется на ту же страницу, с которой вы пришли, и рассматривает ее как занесенную в черный список, поэтому не следует никаких ссылок.

Хотя это абсолютно возможно, есть способ сделать некоторую магию печенья, чтобы сделать переопределение проверки безопасности не случаться, я не знаю, как это сделать.

Однако, если вы захотите перекомпилировать wget вручную, исправление вашей проблемы может быть тривиальным: просто добавьте эти 2 строки в src/recur.c .

  status = retrieve_url (url_parsed, url, &file, &redirected, referer, &dt, false, i, true); + + if (redirected) + hash_table_remove (blacklist, url); if (html_allowed && file && status == RETROK && (dt & RETROKF) && (dt & TEXTHTML)) 

Это приведет к удалению текущей страницы из черного списка при каждом перенаправлении, тем самым устраняя проблему.

Будьте предупреждены, что в некоторых случаях он может запускать бесконечные циклы, поэтому это не готовый к отправке патч.

После того как вы восстановили wget, вы можете просто использовать что-то вроде wget -np -nd -r -k -p <url> чтобы получить весь поток, как и предполагалось.

Попробуй это:

 wget -nv --mirror --span-hosts --convert-links --adjust-extension --page-requisites --no-parent https://some.site.com/foo/bar/threadNumber 

Эти команды получают весь поток со всеми элементами со всех сайтов. Вы можете ограничить его по типам, --accept html,gif,png,jpg,jpeg .

Просто подумайте здесь … как насчет чего-то вроде webhttrack? или сначала запустить через jmeter -> список экспорта ссылок -> затем использовать wget или curl?

UPDATE Только что протестировано с помощью webhttrack, этот работает на работу и может использоваться как в CLI, так и в Gui ….

  • curl, wget ничего не возвращают
  • Как загрузить все изображения размером> 100 КБ на веб-странице?
  • Использовать i2p или freenet в командной строке
  • `wait` не ждет` wget -background`
  • Получить все изображения с веб-сайта
  • Почему я не могу передать файл через wget (FTP) с помощью функции exec () в PHP?
  • Может ли wget * печатать * URL-адреса зависимостей страниц?
  • Зеркальный список файлов
  • Возобновить загрузку wget из другого зеркала
  • загрузка файлов с помощью wget
  • Как загрузить файл путем подделки IP-адреса запроса?
  • Interesting Posts

    как добавить curlcpp в библиотеку / включить путь?

    Как остановить работу в минуту cron?

    Удалить файл, но только если это символическая ссылка

    awk с переменными в состоянии и в файле перенаправления вывода

    Не удается получить связанные формы некоторых кластеров графена unicode с сочетанием диакритических знаков

    В bash, как преобразовать 8 байтов в unsigned int (64-битный LE)?

    Не удается установить Flash на Debian Stretch

    Разрешения для пользователей Apache и FTPd

    Каковы альтернативы для запуска и остановки конфигурации openvpn в Debian Jessie?

    gcc компиляция завершена с помощью «фатальной ошибки: строка: нет такого файла или каталога #include <string>"

    предупреждение о статусе текущего состояния

    -bash: yum: команда не найдена

    Почему нет единого унифицированного менеджера пакетов для Linux?

    Как создать зашифрованный файл большого размера с помощью команды openssl

    Вызов функции, которая вызывает другую функцию с циклом for

    Linux и Unix - лучшая ОС в мире.