我需要从网站中提取所有图像。到目前为止我用过
Elements images = node.select("img");
使用Jsoup。但我意识到它可能会遗漏一些图像,例如在this网站中的顶部图像,这是在css中定义的。
有没有一种简单的方法可以不错过这样的图像,并获得页面中的所有图像作为Jsoup元素? 请注意,“没有简单的方法可以做到这一点”也是一个有效的答案,我只想知道这一点。谢谢!
答案 0 :(得分:2)
如果您只需要从网站获取所有图像,则首先需要获取所有标记,然后获取本网站上加载的css的所有背景图像。但是这仍然不是所有图像,因为有些可以通过javascript加载(或者某些标签或css可以通过javascript更改)。
为了确保在浏览器加载网站时获得完全加载网站所需的一切,获取DOM树,迭代它,检查DOM中每个元素的css属性以获取背景图像,并从中提取所有图像标签
我不确定Jsoup是否能做到这一点。可能它不会考虑javascript,甚至可能是css。它似乎只是html解析器。
我认为最好的方法是使用浏览器的开发者控制台(发送回我之前问题的答案)。在控制台中,您可以执行javascript以迭代DOM树中的所有元素,并获取一个URL列表,您可以稍后复制这些URL并用于通过某些服务器端脚本加载图像。
答案 1 :(得分:1)
Jsoup
在提取background-image
中定义的css
时对您没有任何帮助。
检查this是否有解决方案。
答案 2 :(得分:1)
使用java
在CSS中获取图像的URL ..从此堆栈溢出问题中找到答案。 Get URL of images in CSS file using Java?
或
这样的逻辑答案 3 :(得分: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')