web scraping -> PDF

Задача: скачать web-страницу и сохранить её в PDF, и чтобы при этом результат выглядел примерно так же, как если бы сделать это вручную из браузера, — со всеми картинками и стилями, только без скриптов.

Разница в том, что ссылок на страницы много, они в текстовом файле, и надо это сохранение страниц автоматизировать.

Есть библиотека для этого? Чтобы на входе адрес web-страницы (HTML с картинками и стилями), на выходе PDF.

Интересует библиотека для JVM (Java, Scala, Clojure) или Python.

Такое существует?

Підписуйтеся на Telegram-канал «DOU #tech», щоб не пропустити нові технічні статті

👍ПодобаєтьсяСподобалось0
До обраногоВ обраному0
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Есть для nodeJS. Возможно есть и для других языков, но ищите на таких же принципах — запускается хром без головы и при помощи АПИ печатается страница в пдф.

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

Не советую решений с phantomjs — он морально и физически устарел (собственно неправильно ренедрит даже после основательных танцев с бубном) и новая версия не выйдет никогда.

chrome --headless  --window-size=1920,1080 --disable-gpu --virtual-time-budget=5000 --print-to-pdf=dou.pdf https://dou.ua/

Это мог бы быть интересный вариант, но когда я попробовал эту команду, она просто молча выполнилась и всё, — ни сообщений, ни созданных файлов, ничего. В чём прикол?

Соболезную :)

"C:\долгий\путь\к\chrome.exe" --headless  --window-size="1920,1080" --disable-gpu --virtual-time-budget=5000 --print-to-pdf="D:\абсолютный\путь\к\dou.pdf" https://dou.ua/

Ежели необходимо таки файл на диск «С» сохранять, то, возможно, стоит консоль запустить от админа.

спробуйте github.com/GoogleChrome/puppeteer — дуже крута штука з купою налаштувань ) nodejs але там все дуже просто

wkhtmltopdf.org хорошая библиотека, возможно будет полезна для Вашей задачи.

Спасибо, но там C, а я им не владею.

Понравился этот вариант: github.com/qoda/python-wkhtmltopdf
Но есть проблема: у меня винды и стоит дистрибутив Anaconda Python, и как туда поставить пакет wkhtmltopdf — вообще непонятно. Анакондовский навигатор его не находит в поиске.

Попробовал ещё вот так:

C:\Anaconda3\pkgs\pip-10.0.1-py36_0\Scripts>pip install python-wkhtmltopdf
Unable to create process using ’C:\Anaconda3\pkgs\pip-10.0.1-py36_0\python.exe C:\Anaconda3\pkgs\pip-10.0.1-py36_0\Scripts\pip-script.py install python-wkhtmltopdf’

Anaconda Python под виндами вообще не работоспособен или я чего-то не знаю или что-то делаю не так?

Попробуйте установить VirtualBox, а в нем установить Ubuntu, а в нем установить python-wkhtmltopdf и все такое.

Даже этот способ не сработал:
anaconda.org/bioconda/wkhtmltopdf

C:\Anaconda3\Scripts>conda install -c bioconda wkhtmltopdf
Solving environment: failed

PackagesNotFoundError: The following packages are not available from current channels:

— wkhtmltopdf

Current channels:
(... список каналов ...)

Поискал ещё тут:
anaconda.org/search?q=wkhtmltopdf

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

Попробуйте еще тут wkhtmltopdf.org/downloads.html скачать „7z archive for Windows XP/2003 or later”, и потом запустить wkhtmltopdf.exe dou.ua dou.pdf

Вы будуте смеяться, — сегодня нашёл и буквально минуту назад попробовал, не успев прочитать ваше сообщение. :-)

Отличный вариант. Он ещё и гиперссылки внутри PDF сохраняет, и по ним можно переходить.
Буду вызывать wkhtmltopdf.exe из своей программы.

Підписатись на коментарі