JSoup - 在div id中抓取div类中的URL

时间:2016-04-27 00:57:08

标签: java html jsoup

我漫游,试图找到一个解决方案,如何从网页中的div(带有id)中获取字符串 - 更具体地说,是另一个URL。这是我目前的代码:

Document doc = Jsoup.connect("http://www.wowhead.com/item=" + item_id).get();
Elements info = doc.select("div#ic" + item_id);
System.out.println(info);

项目ID示例为10003.我正在尝试获取与内部div中的项目对应的图像URL,但它只返回:

<div id="ic10003" style="float: left"></div>

我还尝试选择名为iconlarge的inner-div类,其中包含:

Elements info = doc.select("div.iconlarge");

但它什么也没有回报。我假设它是一个变量类型的问题,但我仍然不确定。有什么建议?

1 个答案:

答案 0 :(得分:0)

使用 Jsoup 会很困难。当您打印doc时,您会看到有一个元素:

<div id="ic10003" style="float: left"></div>

没有内容。虽然有几行,但是有一个脚本似乎是将图像添加到该div:

$WH.ge('ic10003').appendChild(Icon.create('inv_gauntlets_05', 2, null, 0, 1));
// and a few more lines

现在, Jsoup 只能解析 raw HTML,它不会执行任何脚本或将样式表应用于元素。

不确定它是否正是您要查找的内容,但请查看该网站的meta标记:

<meta property="og:site_name" content="Wowhead"> 
<meta property="og:title" content="Black Mageweave Gloves"> 
<meta property="og:image" content="//wow.zamimg.com/images/wow/icons/large/inv_gauntlets_05.jpg"> 
<meta property="og:url" content="http://www.wowhead.com/item=10003/black-mageweave-gloves"> 
...

具有og:image property值的元素似乎正是您要找的。

您可以使用以下方法阅读它(请注意select仅适用于body元素):

private String imgUrl(Document doc) {
    for (Element m : doc.getElementsByTag("meta")) {
        if ("og:image".equals(m.attr("property")))
            return m.attr("content");
    }
    return null;
}