2016-04-27 38 views
0

我漫游,试图找到一个解决方案,如何从网页中的div(带有id)获取字符串 - 更具体地说,是另一个URL。下面是代码我目前有:JSoup - 从div class中抓取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内-DIV级,与此:

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

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

+0

你能更具体什么是您预期的输出? – soorapadman

+0

我试图抓住一个div内部声明的图像url。预期的输出是如果使用是10003:http://wow.zamimg.com/images/wow/icons/large/inv_gauntlets_05.jpg nyname00解决了我的问题,虽然。再次,对于迟到的回复感到抱歉。 –

回答

0

这将是困难的使用Jsoup。当您打印doc你会看到有一个元素:

<div id="ic10003" style="float: left"></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:imageproperty值的元素似乎是你在做什么寻找。

您可以使用类似下面的方法读取它(注意,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; 
} 
+0

对不起,对于迟到的回复 - 我没有收到任何回复我发表的帖子的电子邮件。非常感谢你的帮助!在阅读实际的div之前,我应该首先查看meta标签。 –