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

时间:2011-02-03 04:12:47

标签: java

我想从网页的HTML源获取所有图片网址列表(abosulte和相对网址)。我使用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源代码所示。

我怎么能这样做??请帮我这个.. 感谢

2 个答案:

答案 0 :(得分:1)

我认为这有点困难。你基本上需要一个库来下载一个网页,构建页面的DOM并执行任何可能改变DOM的javascript。完成所有这些后,您必须从DOM中提取所有可能的图像。另一种可能的选择是拦截库中的所有调用以下载资源,检查URL以及URL是否是URL的图像记录。

我的建议是首先使用HtmlUnit(http://htmlunit.sourceforge.net/gettingStarted.html)。它可以很好地构建DOM。我不确定它有什么类型的钩子,用于拦截下载资源的方法。当然,如果它没有为您提供钩子,您可以始终使用AspectJ或只是修改HtmlUnit源代码。祝你好运,这听起来像一个相当有趣的问题。当你想出来时,你应该发布你的解决方案。

答案 1 :(得分:0)

如果你只是想要在页面中引用的每个图像,你不能只用简单的正则表达式扫描HTML和任何链接的javascript或CSS吗?你是否有可能在HTML / JS / CSS中得到[-:_./%a-zA-Z0-9]*(.jpg|.png|.gif)而不是图像?我猜不太可能。无论如何你应该允许断开链接。

Karthik的建议更为正确,但我认为让你获得绝对一切并滤除无趣的图像更为重要。