2013-08-17 4 views
1

Мне нужно извлечь все изображения с веб-сайта. До сих пор я использовалИзвлечение всех изображений с сайта

Elements images = node.select("img"); 

С Jsoup. Но я понял, что он может пропустить некоторые изображения, например, верхнее изображение на сайте this, которое определено в css.

Есть ли простой способ не пропустить такие изображения и получить все изображения на странице как элементы Jsoup? Обратите внимание, что «нет простого способа сделать это» также является верным ответом, я бы просто хотел это знать. Благодаря!

ответ

2

Если вам просто нужно получить все изображения с сайта, вам сначала нужно получить все теги и получить все фоновые изображения из css, загружаемого на этот сайт. Но все же это могут быть не все изображения, потому что некоторые могут быть загружены javascript (или некоторые теги или css могут быть изменены с помощью javascript).

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

Я не уверен, может ли Jsoup это сделать. Вероятно, он не учитывает javascript и, возможно, даже css. Кажется, это всего лишь html-парсер.

Я думаю, что лучший способ - использовать консоль разработчика браузера (отправка обратно на мой ответ на предыдущий вопрос). С консоли вы можете выполнить javascript для итерации по всем элементам дерева DOM и получить список URL-адресов, которые позже можно скопировать и использовать для загрузки изображений с помощью сценария на стороне сервера.

+0

Спасибо, но мне нужен инструмент (библиотека), которая работает с Java – nodwj

0

Следующий код будет работать для получения большей части изображений, кроме тех, которые определены в css. Путь к изображениям через КСС по отношению к пути файла CSS itslef

function img_find() { 
    var imgs = document.getElementsByTagName("img"); 
    var imgSrcs = []; 

for (var i = 0; i < imgs.length; i++) { 
    imgSrcs.push(imgs[i].src); 
} 

return imgSrcs; 
} 

Вы также можете попробовать

window.getComputedStyle(document.getElementByTag("img"),null).getPropertyValue('background-image') 
+0

Это то, что я прямо сейчас. Я прошу помочь получить их из CSS и, возможно, больше – nodwj

+0

Что вы подразумеваете под «окном»? почему ById, а не по имени тега? почему div_a? – nodwj

+0

мой плохой, я не сделал крошечную ошибку, я отредактировал его сейчас, и этот должен работать –

1

Jsoup не может быть какой-либо помощи вам в извлечении background-image сек, определенные в css.

Проверьте решение проблемы this.

+0

Спасибо. К сожалению, нигде я не нашел руководства по его использованию (CSS Parser/SAC). – nodwj