我漫游,试图找到一个解决方案,如何从网页中的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");
但它什么也没有回报。我假设它是一个变量类型的问题,但我仍然不确定。有什么建议?
答案 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
值的元素似乎正是您要找的。 p>
您可以使用以下方法阅读它(请注意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;
}