Рейтинг:0

wget не выполняет рекурсию при выводе вывода на стандартный вывод

флаг jp

Я хочу рекурсивно загружать веб-страницы и направлять вывод в фильтр. Я использую:

wget -qm -O- http://mywebsite.com/initialpath.php | ./фильтр

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

Как я могу этого добиться?

флаг us
Вы уверены, что `./filter` здесь не блокируется?
chqrlie avatar
флаг jp
Я уверен... Я изучил исходный код `wget` и нашел объяснение.
Рейтинг:1
флаг jp

Мне не кажется возможным достичь своей цели с текущими версиями wget.

После изучения исходного кода wget версии 1.18 я пришел к таким выводам:

  • wget не может рекурсивно, если он не хранит загруженные файлы, по крайней мере, временно, как для --паук.

  • Когда прошло -O имя файла, он продолжает добавляться к имя файла и повторно анализирует весь файл после каждой загрузки, полностью загружая его в память (или отображая его). Это очень громоздко и неэффективно.

  • Когда прошло -О-, он направляет загруженный файл в стандартный вывод и пытается перезагрузить - искать дополнительные URL-адреса для получения... Что вызывает стандартный ввод читать для этой цели. Это побочный эффект реализации.

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

Ответить или комментировать

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