Мне нужно скачать все PDF-файлы, представленные на сайте. Проблема в том, что они не перечислены ни на одной странице, поэтому мне нужно что-то (программа? рамки?) сканировать сайт и скачивать файлы, или, по крайней мере, получить список файлов. Я попробовал WinHTTrack, но не смог заставить его работать. DownThemAll for Firefox не сканирует несколько страниц или целые сайты. Я знаю, что есть решение, так как я не мог быть первым человеком, которому представили эту проблему. Чтобы вы посоветовали?
3 ответа
Индексируется ли сайт Google? Вы можете просто найти на site:www.example.com filetype:pdf
и он вернет все PDF-файлы, проиндексированные на этом сайте.
Пример:site:en.wikipedia.org тип файла:pdf
Другой способ сделать это - использовать wget, инструмент командной строки * nix, но доступный для окон. Используя рекурсивный режим и указав сохранение только файлов PDF, он может пройти по сайту и найти все файлы PDF.
wget.exe -r -A pdf -np http://www.example.com/
будет рекурсивно загружать все файлы PDF с сайта example.com и не будет пытаться перейти в родительский каталог (актуально, только если вы хотите начать с конкретный подкаталог).
Я на самом деле раньше не проверял использование WGET только с определенным типом файла, но раньше я выполнял рекурсивные загрузки, и он работал нормально, так что вы можете попробовать.
Я могу посоветовать вам использовать jsoup, Java HTML Parser, если вы знакомы с Java или BeautifulSoup, если вы знакомы с Python.
Напишите рекурсивный метод, который делает следующее:
- найти все ссылки на странице, которые имеют тег "a" и атрибут "href", получить его значение и сравнить ссылку с именем домена.
- чек расширение ссылки PDF или нет
- если эта ссылка имеет расширение pdf, загрузите ее или получите контент, если эта ссылка совпадает с доменом, и повторите ту же операцию.
Что-то вроде того.
Это не самое простое решение, но оно мое любимое.
Напиши свой собственный паук! Пусть он пересекает сайт, разбирает страницы и ищет нужные файлы. Есть много интересных задач, которые приходят с написанием паука, и мне было очень весело.
Хотя это может быть не то, что искал archer1742, я уверен, что кому-то (возможно, и archer1742) понравится это решение.