使用JAVA提取HTML中的所有图像

6
我想从网页的HTML源代码中获取所有图像的URL列表(包括绝对和相对URL)。我使用Jsoup解析HTML,但它没有显示所有图像。例如,当我解析google.com的HTML源代码时,它显示零个图像。在google.com的HTML源代码中,图像链接的形式如下:
"background:url(/intl/en_com/images/srpr/logo1w.png)"
而在rediff.com中,图像链接的形式如下:
videoArr [j] = new Array("http://ishare.rediff.com/video/entertainment/bappi-da-the-first-indian-in-grammy-jury/2684982","http://datastore.rediff.com/h86-w116/thumb/5E5669666658606D6A6B6272/v3np2zgbla4vdccf.D.0.bappi.jpg","Bappi Da - the first Indian In Grammy jury","http://mypage.rediff.com/profile/getprofile/LehrenTV/12669275","LehrenTV","(2:33)"); j = 1 videoArr [j] = new Array("http://ishare.rediff.com/video/entertainment/bebo-shahid-jab-they-met-again-/2681664","http://datastore.rediff.com/h86-w116/thumb/5E5669666658606D6A6B6272/ra8p9eeig8zy5qvd.D.0.They-Met-Again.jpg","Bebo-Shahid : Jab they met again!","http://mypage.rediff.com/profile/getprofile/LehrenTV/12669275","LehrenTV","(2:17)");
并不是所有的图像都在“img”标签内。我还想提取甚至不在“img”标签内的图像,如上面的HTML源代码所示。
我该怎么做呢?请在此帮助我。谢谢。

为什么选择Java?你有考虑过开发浏览器插件吗? - fglez
还是实现一个代理来保存所有的图片? - Harry Lime
2个回答

1
这可能有点困难。你需要一个库来下载网页,构建页面的DOM并执行可能改变DOM的任何javascript。完成所有这些后,您必须从DOM中提取所有可能的图像。另一个可能的选择是拦截库对下载资源的所有调用,检查URL,并且如果URL是图像,则记录该URL。
我的建议是先尝试使用HtmlUnit(http://htmlunit.sourceforge.net/gettingStarted.html)。它很好地构建了DOM。我不确定它具有哪些类型的钩子,可以拦截下载资源的方法。当然,如果它没有为您提供钩子,您始终可以使用AspectJ或简单地修改HtmlUnit源代码。祝你好运,这听起来是一个相当有趣的问题。当您解决它时,应该发布您的解决方案。

0

如果你只想要页面中提到的每个图像,难道你不能用简单的正则表达式扫描HTML和任何链接的JavaScript或CSS吗?在HTML / JS / CSS中找不到图像的可能性有多大?我猜不太可能。而且无论如何,你都应该允许损坏的链接。

Karthik的建议更正确,但我想对你来说最重要的是获取绝对所有内容并过滤掉不感兴趣的图像。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接