繁体   English   中英

JSoup-从div ID中的div类获取URL

[英]JSoup - Grabbing URL from div class within a div id

我四处漫游,试图找到一种解决方案,该解决方案涉及如何从网页内的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。我正在尝试获取与inner-div中的项目相对应的图像URL,但它仅返回以下内容:

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

我还尝试使用以下方法选择名为iconlarge的inner-div类:

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

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

使用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仅能够解析原始 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;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM