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

标签 java

我想从网页的 HTML 源中获取所有图像 url 的列表(abosulte 和相对 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 - 第一个进入格莱美评审团的印度人","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 他们又见面了!","http://mypage.rediff.com/profile/getprofile/LehrenTV/12669275","LehrenTV","(2:17)");

所有图像都不在“img”标签中。我还想提取甚至不在“img”标签中的图像,如上面的 HTML 源代码所示。

我该怎么做..?请帮我解决这个问题.. 谢谢

最佳答案

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

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

关于java - 使用 JAVA 从 HTML 中提取所有图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4882639/

相关文章:

java - KNIME:比较一列是否包含另一列的子集

java - JDK tools.jar 作为 Maven 依赖项

java - 如果我调用自己的无参数构造函数,将调用多少个构造函数?

java - Hibernate 返回先前加载的实体的代理

java - 检查一个对象是否与传递的对象属于同一类型

Java - 更新/更改 JFrame 的内容 - (删除旧内容)并插入新内容(面板 itd。)

java - Play framework + Ebean : [error] . .. 未找到:类型 Finder

java - Spring @Required 和 @Mandatory 注解

java - 将数组中的每个元素与其相邻元素交换

java - 空体的接口(interface)实现