2013-08-17 169 views
1

我需要從網站中提取所有圖像。直到現在我用從網站中提取所有圖像

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

與Jsoup。但是我意識到它可能會丟失一些圖像,例如在css中定義的this網站中的頂部圖像。

有一種簡單的方法來不會錯過這樣的圖像,並獲得在頁面Jsoup元素的所有圖像? 請注意'有沒有簡單的方法來做到這一點'也是一個有效的答案,我只想知道這一點。謝謝!

回答

2

如果你只是需要從您首先需要獲得所有的標籤和比是在這個網站加載CSS讓所有的背景圖片的網站獲得的所有圖像。但是,這仍然可以不是所有的圖像,因爲有些可以通過JavaScript加載(或者一些標籤或CSS可以用JavaScript來改變)。

爲了確保您獲得瀏覽器加載所需的全部內容,獲取DOM樹,遍歷它,檢查DOM中每個元素的css屬性以獲取背景圖像,並提取所有圖像來自標籤。

我不確定Jsoup是否可以做到這一點。可能它不會考慮到JavaScript,甚至可能是CSS。它似乎只是HTML解析器。

我認爲最好的方法是使用瀏覽器的開發者控制檯(發回給我的回答你前面的問題)。在控制檯中,您可以執行javascript來迭代DOM樹中的所有元素,並獲取一個url列表,稍後可以通過某些服務器端腳本來複制和加載圖像。

+0

由於一些邏輯,但我需要一個工具(庫),它與Java – nodwj

0

下面的代碼將獲得大部分的影像,除了在CSS中定義的工作。 通過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尋求解決方案。在CSS中使用java圖像的

+0

謝謝。不幸的是,我沒有找到如何使用它的指南(CSS Parser/SAC)。 – nodwj