【发布时间】:2014-06-23 13:07:58
【问题描述】:
我有一个函数,给定一个 div 元素,它会在其中找到所有 img 元素。 唯一的问题是只选择了前 3 个。前 3 个和其余的唯一区别是包含属性(class 和 alt)
Document doc = Jsoup.connect("http://www.dhgate.com/wholesale/kitchen-fixtures/c019034002-1.html").get();
Elements elements = doc.select("div.prolist");
for (Element e : elements) {
String img[] = getImagesSrc(e, 1);
}
....
protected String[] getImagesSrc(Element e, int numOfImages) {
String src[];
src = new String[numOfImages];
int i = 0;
Elements imgElements = e.select("img[src]");
for (Element o : imgElements) {
System.out.println("html = " + o.outerHtml());
src[i++] = o.attr("src");
}
return src;
}
一些示例 div 元素(这些是传递给函数的内容)
<div class="prolist">
<a href="some link"><img class="folder" alt="Folder" src="folder.jpg"/></a>
</div>
<div...
...div>
<div class="prolist">
<a href="some link"><img src="folder.jpg"/></a>
</div>
我不应该得到所有图像而不考虑属性吗?
我已经使用来自网站和本地主机的相同 HTML 结构测试了代码。该代码在 locahost 上有效,但在网站 (www.dhgate.com) 上无效
已解决 - 该站点使用了延迟加载插件,因此检查器中的 HTML 与 Jsoup 的读取方式不同。就我而言,我必须包含具有 [class~=lazyload]
的“a”标签【问题讨论】:
-
请发布更完整的源 HTML 示例。另外,你怎么打电话给
getImagesSrc()?也请提供调用方法。 -
理想情况下,这段代码应该打印所有带有 src 属性的 img 标签,并将 src 存储在 src 数组中,但这取决于您作为参数传递给函数的元素。可能是缺少 img 标签的特定元素。
-
我已经对传递给函数的内容进行了双重和三重检查,它与上面的示例元素完全相同
-
@MCL 我正在从我的代码主体中调用该函数,该函数会抓取其他元素(并且一切正常)。还应该说函数以前不是函数,我把它改写成函数来整理自己的代码。但无论哪种情况,我得到的结果都是一样的。
-
您可以编辑您的问题并提供我询问的其他信息,无需在评论中回答。
标签: java jquery html jquery-selectors jsoup