Подтвердить что ты не робот

Wget reject еще загружает файл

Мне нужна структура папок, но я не мог понять, как с помощью wget. Вместо этого я использую это:

wget -R pdf, css, gif, txt, png -np -r http://example.com

Который должен отклонить все файлы после -R, но мне кажется, что wget все еще загружает файл, а затем удаляет его.

Есть ли лучший способ получить структуру папок?

Запрос TTP отправлен, ожидая ответа... 200 OK Длина: 136796 (134K) [application/x-download] Сохранение: "Example.com/file.pdf"

100% [=====================================] 136 796 853 К/с в 0,2 с

2012-10-03 03:51:41 (853 КБ/сек) - "Example.com/file.pdf" сохранено [136796/136796]

Удаление example.com/file.pdf, поскольку он должен быть отклонен.

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

4b9b3361

Ответ 1

Похоже, что wget был разработан для работы. При выполнении рекурсивных загрузок файлы без листа, соответствующие списку отклонения, по-прежнему загружаются, поэтому их можно собирать для ссылок, а затем удалять.

Из комментариев в коде (recur.c):

Была указана либо опция -delete-after, либо мы загрузили этот   в противном случае отклонено (например, -R) HTML файлом, так что мы   может собрать свои гиперссылки - в любом случае, удалить   локальный файл.

У нас был обкатка с этим в прошлом проекте, где нам пришлось зеркально отразить сайт, прошедший проверку подлинности, и wget продолжает удалять страницы выхода из системы, даже когда он должен был отклонить эти URL-адреса. Мы не смогли найти никаких вариантов для изменения поведения wget.

Решение, с которым мы столкнулись, заключалось в загрузке, взломать и построить собственную версию wget. Вероятно, более элегантный подход к этому, но быстрое исправление, которое мы использовали, заключалось в том, чтобы добавить следующие правила в конец download_child_p() подпрограммы (измененный в соответствии с вашими требованиями ):

  /* Extra rules */
  if (match_tail(url, ".pdf", 0)) goto out;
  if (match_tail(url, ".css", 0)) goto out;
  if (match_tail(url, ".gif", 0)) goto out;
  if (match_tail(url, ".txt", 0)) goto out;
  if (match_tail(url, ".png", 0)) goto out;
  /* --- end extra rules --- */

  /* The URL has passed all the tests.  It can be placed in the
     download queue. */
  DEBUGP (("Decided to load it.\n"));

  return 1;

 out:
  DEBUGP (("Decided NOT to load it.\n"));

  return 0;
}