Гид по технологиям

Автоматическое сохранение нескольких веб‑страниц в PDF с помощью Wget

7 min read Инструменты Обновлено 23 Dec 2025
Wget: массовая конвертация веб‑страниц в PDF
Wget: массовая конвертация веб‑страниц в PDF

Wget позволяет массово скачать веб‑страницы локально. Соберите ссылки в текстовый файл, запустите wget с нужными опциями, затем конвертируйте загруженные HTML в PDF (например, PrinceXML, wkhtmltopdf или macOS Automator). Ниже — пошаговый SOP, обходные варианты и чек‑листы для разных ролей.

Загрузка страницы в PDF с помощью Wget

Есть много онлайн‑сервисов и расширений, которые превращают страницу в PDF. Но если нужно обработать много ссылок разом, выполнять это по одной — долго и утомительно.

Wget — простой командный инструмент, который можно встроить в скрипт и автоматизировать всю работу: скачать HTML и ресурсы страницы, а затем пакетно преобразовать их в PDF.

Почему именно Wget

Wget — это свободный пакет для загрузки файлов из интернета. Он хорошо подходит для зеркалирования страниц на диск. Коротко о преимуществах:

  • Работает без интерактивного ввода — можно запускать в фоне.
  • Понимает структуру сайта и умеет следовать ссылкам, создавая локальные копии.
  • Устойчив к нестабильным соединениям — при поддержке сервера можно докачивать файлы.
  • Поддерживает прокси и настройки окружения.

Важно: Wget уважает robots.txt по умолчанию; но поведение можно конфигурировать. Соблюдайте правила сайта и законы о персональных данных.

Установка Wget

На macOS

Самый быстрый способ — Homebrew. Если Homebrew не установлен, установите его с официального сайта. Затем в Терминале выполните:

brew install wget

Если Homebrew уже есть, рекомендуется обновить его и пакеты:

brew update && brew upgrade wget

На Windows 10

Для Windows доступны сборки Wget. Одна из распространённых — с сайта Eternally Bored. Скачайте 64‑битную версию и положите исполняемый файл в папку, например C:\wget.

Расположение wget в Windows

Далее добавьте путь в системную переменную окружения Path: Панель управления > Система > Дополнительные параметры системы > Переменные среды. В разделе «Системные переменные» отредактируйте Path и добавьте C:\wget.

Окно переменных окружения в Windows

Добавление пути Wget в переменные среды

Проверьте работу в Командной строке:

wget -h

Или в PowerShell:

wget.exe -h

Запуск wget в командной строке

Подготовьте файл со ссылками

Чтобы скачать много страниц, сохраните все URL в текстовый файл (по одному на строке). Для сбора ссылок удобно использовать расширения:

  • Link Klipper — экспортирует ссылки в CSV или TXT; можно выделять область. Файл сохраняется в папку «Загрузки».

Extension Link Klipper: окно экспорта ссылок

  • Snap Links Plus — позволяет лассо‑выделением собрать ссылки и скопировать их в буфер обмена.

Пример простого файла links.txt:

https://example.com/chapter1.html
https://example.com/chapter2.html
https://example.com/chapter3.html

Сохраните этот файл, например, в ~/Downloads/links.txt или C:\Users\You\Downloads\links.txt.

Настройка рабочей директории

Wget извлекает ресурсы (CSS, изображения, JS) и пытается воспроизвести структуру сайта локально. Создайте отдельную папку, чтобы не загромождать рабочую директорию:

mkdir Wgetdown
cd Wgetdown

Создание папки через Терминал

Разбор ключевых опций Wget

Команда, которую мы будем использовать:

wget -E -H -k -K -p -i /path/to/links.txt

Коротко о каждом ключе:

  • -E, –adjust-extension — добавляет расширение .html когда это необходимо.
  • -H, –span-hosts — разрешает скачивать ресурсы с других хостов (например, CDN‑картинки).
  • -p, –page-requisites — скачивает все необходимые файлы для отображения страницы (CSS, изображения и т. п.).
  • -k, –convert-links — преобразует ссылки для оффлайн‑просмотра.
  • -K, –backup-converted — создаёт резервную копию оригинала с суффиксом .orig.
  • -i, –input-file — считывает URL из файла.

Дополнительно полезные опции:

  • -r — рекурсивная загрузка (внимательно с глубиной и лимитами).
  • -l N — задать глубину рекурсии (уровни).
  • -w N или –wait — пауза между запросами (не нагружайте сервер).
  • –limit-rate=100k — ограничить скорость загрузки.
  • -nc, –no-clobber — не перезаписывать существующие файлы.

Пример: скачать главу за главой

Предположим, у вас есть список глав в ~/Downloads/links.txt. В директории Wgetdown выполните:

wget -E -H -k -K -p -i ~/Downloads/links.txt

Выполнение команды wget с файлом ссылок

Ждите завершения. В папке появится каталог с доменом сайта и набор html‑файлов и ассетов.

Скачанные файлы и ассеты в папке

Конвертация HTML в PDF

Превращение HTML в PDF — это отдельная задача. Результат зависит от:

  • доступных системных шрифтов;
  • корректности HTML и CSS;
  • поддержки таблиц, плавных обтеканий и медиа;
  • необходимости оглавления (TOC).

Ниже — варианты для Windows и macOS и универсальные инструменты.

Windows: PrinceXML

PrinceXML конвертирует HTML/CSS в качественный PDF с сильной типографикой. Хорош для документов со сложным макетом. Бесплатен для некоммерческого использования; для больших объёмов понадобятся лицензии.

PrinceXML: инструмент для конвертации HTML в PDF

Пример вызова (если установлено prince):

prince chapter1.html -o chapter1.pdf

macOS: Automator + cupsfilter

На macOS можно создать Quick Action в Automator, который запускает shell‑скрипт и для каждого файла вызывает cupsfilter — системный конвертер в PDF.

В Automator: создать «Быстрое действие», «Получать вход: файлы или папки» → «Запустить shell‑скрипт» (Pass input as arguments). Содержимое скрипта:

for theFileToProcess in "$@"
do
  cupsfilter "$theFileToProcess" > "${theFileToProcess%.*}.pdf"
done

Сохраните как HTML2PDF. Выделяете HTML‑файлы в Finder → Сервисы → HTML2PDF.

Shell‑скрипт для пакетной конвертации в macOS

Пример конвертации множества HTML файлов на Mac

Универсальные альтернативы

  • wkhtmltopdf — движок на базе Qt/WebKit. Хорош для статичных страниц.
  • Headless Chrome (Puppeteer) — рендерит страницы как браузер; подходит для сайтов с клиентским JS.
  • wkhtmltopdf и headless Chrome позволяют формировать TOC и управлять стилями печати.

Пример с Puppeteer (Node.js):

const puppeteer = require('puppeteer');
(async () => {
  const browser = await puppeteer.launch();
  const page = await browser.newPage();
  await page.goto('file:///path/to/chapter1.html', {waitUntil: 'networkidle0'});
  await page.pdf({path: 'chapter1.pdf', format: 'A4'});
  await browser.close();
})();

Когда Wget не сработает (ограничения и обходы)

  • Динамически генерируемый контент (SPA, heavy JS): Wget не исполняет JavaScript. В таких случаях используйте headless Chrome / Puppeteer или Selenium.
  • Аутентификация: если сайт требует логин, нужно настраивать куки/сессию или использовать инструмент, который может имитировать аутентификацию.
  • Ограничения по robots.txt и правилам сайта: не обойдите запреты, если они есть.
  • Формы и POST‑запросы: Wget ориентирован на GET; для сложных сценариев потребуется скрипт, который отправляет POST‑запросы и сохраняет результаты.

SOP: пошаговый playbook для массовой конвертации

  1. Соберите ссылки в links.txt (по одной на строке).
  2. Создайте пустую директорию проекта: mkdir Wgetdown && cd Wgetdown.
  3. Проверьте настройки: не запускайте с рекурсией без лимитов.
  4. Выполните загрузку:
wget -E -H -k -K -p -i /path/to/links.txt
  1. Просмотрите скачанные HTML и поправьте при необходимости относительные пути.
  2. Выберите конвертер:
    • Для простого HTML: wkhtmltopdf или cupsfilter.
    • Для страниц с JS: Puppeteer (headless Chrome).
    • Для типографичных PDF: PrinceXML.
  3. Запустите пакетную конвертацию (пример для wkhtmltopdf):
for f in *.html; do wkhtmltopdf "$f" "${f%.*}.pdf"; done
  1. Проверка качества: откройте несколько PDF, проверьте шрифты, изображения и оглавление.
  2. Сохраните результаты и архивируйте исходники.

Чек‑листы по ролям

Для автора контента

  • Собрать список всех нужных URL.
  • Проверить, что страницы корректно отображаются в браузере.
  • Протестировать 1–2 страницы после конвертации.

Для разработчика/инженера

  • Настроить окружение (wget, wkhtmltopdf/puppeteer).
  • Автоматизировать конвертацию и логирование ошибок.
  • Ограничить скорость запросов и настроить retry.

Для администратора/инфраструктуры

  • Убедиться, что серверы не блокируют массовые запросы.
  • Настроить прокси при необходимости.
  • Проконтролировать соблюдение закона и robots.txt.

Мини‑методология проверки качества (QA)

  1. Выберите репрезентативные страницы (разные шаблоны).
  2. Сравните визуально в браузере и в PDF: шрифты, отступы, таблицы.
  3. Проверьте ссылочную целостность (внутренние ссылки ведут на локальные файлы).
  4. Проверка метаданных PDF (заголовок, автор) по требованию.
  5. Проведите тест на 10–50 файлов перед массовой обработкой.

Шаблоны и примеры

Пример содержимого links.txt:

https://processedword.net/manual/chapter1
https://processedword.net/manual/chapter2
https://processedword.net/manual/chapter3

Пример команд для пакетной конвертации через wkhtmltopdf:

mkdir pdfs
for f in $(find . -name '*.html'); do
  name=$(basename "$f" .html)
  wkhtmltopdf "$f" "pdfs/${name}.pdf"
done

Диагностика и типичные ошибки

  • Пустые страницы в скачанных файлах: возможно, сайт загружает контент через JavaScript. Используйте headless Chrome.
  • Отсутствуют изображения: проверьте, не блокирует ли сервер referer или CORS‑ограничения. Включите -H для внешних хостов.
  • Битые CSS или некорректные пути: проверьте, добавил ли Wget правильные относительные пути (опция -k).
  • Перезапись файлов: используйте -nc, если не хотите заменять файлы.

Безопасность и конфиденциальность

  • Всегда проверьте политику использования сайта и robots.txt.
  • Не собирайте и не сохраняйте персональные данные без правовой основы.
  • Храните скачанные данные в защищённом месте и удаляйте копии, когда они не нужны.

Критерии приёмки

  • Все URL из links.txt получили корректные локальные HTML файлы.
  • PDF файлы открываются и отображают ключевой контент (заголовки, таблицы, изображения).
  • Для страниц с критичным JS поведение проверено через headless Chrome.
  • Нет ошибок 4xx/5xx при загрузке (или ошибки задокументированы).

Мини‑справочник: полезные команды

  • Скачать по списку ссылок:
wget -E -H -k -K -p -i links.txt
  • Простой конверт в PDF (wkhtmltopdf):
wkhtmltopdf input.html output.pdf
  • Пакетная конвертация (bash):
for f in *.html; do wkhtmltopdf "$f" "${f%.*}.pdf"; done

Ментальные модели и эвристики

  • «Скачать → Проверить → Конвертировать → QA»: разделяйте этапы для быстрого отлова проблем.
  • Для динамического контента думайте «рендер в браузере» (Puppeteer), для статического — «рендер в утилите» (wkhtmltopdf).
  • На сервере ставьте лимиты запросов, чтобы не выглядеть как ddos‑активность.

Принятие решения: какой инструмент выбрать

flowchart TD
  A[Нужна массовая загрузка страниц?] -->|нет| B[Сделать единичный PDF в браузере]
  A -->|да| C[Сайт статичный?]
  C -->|да| D[wget + wkhtmltopdf или PrinceXML]
  C -->|нет| E[Требуется JS‑рендеринг]
  E --> F[Puppeteer / Headless Chrome]
  D --> G[Пакетная обработка]
  F --> G
  G --> H[QA и экспорт]

Краткое резюме

Wget — надёжный инструмент для массового скачивания страниц и их ресурсов. В связке с инструментами конвертации (wkhtmltopdf, PrinceXML, Puppeteer) он позволяет получить PDF‑копии большого числа страниц. Правильно собранный pipeline, лимиты запросов и проверка качества экономят время и помогают избежать ошибок.

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

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Как заблокировать и разблокировать в WhatsApp
Конфиденциальность

Как заблокировать и разблокировать в WhatsApp

Как смотреть регионально заблокированный контент на iPhone
Технологии

Как смотреть регионально заблокированный контент на iPhone

Dynamic Island на Android: установка и настройка
Android.

Dynamic Island на Android: установка и настройка

M.2 SSD: что это и как установить в ПК
Аппаратное обеспечение

M.2 SSD: что это и как установить в ПК

Как обновить Chromebook и проверить Chrome OS
Инструкции

Как обновить Chromebook и проверить Chrome OS

Перемотка на 10 секунд в YouTube и других плеерах
How-to

Перемотка на 10 секунд в YouTube и других плеерах