我有一个包含以下内容的 html 文件:
<div class="title"><a href="../dorothy_perkins_true_blue_suedette/thing?id=130434603" title="Dorothy Perkins True blue suedette clutch bag">Dorothy Perkins True blue suedette clutch bag</a></div>
我想提取 href
中的 url。我有以下代码:
Document doc = Jsoup.connect(url).get();
Elements products = doc.select("div.title a[href]");
System.out.println("size: "+products.size());
然而,打印显示大小为 0。它找不到任何匹配项。我使用的网址是 http://www.polyvore.com/bags/shop?category_id=35
。你可以看看源代码,我很确定上面的代码是正确的。如果有人可以提供一些想法,那就太好了。非常感谢。
最佳答案
我相信您使用以下代码进行连接。
doc = Jsoup.connect("http://www.polyvore.com/bags/shop?category_id=35").get();
如果您执行 System.out.println(doc.html());
,它会返回整 block HTML 源代码,这与我们通过 Mozilla 和 Chrome 等浏览器看到的完全不同。
要解决这个问题,需要在Jsoup连接中指定userAgent
参数,如下所示。
Document doc = null;
Elements aEles = null;
try {
// doc = Jsoup.connect("http://www.polyvore.com/bags/shop?category_id=35").get();
doc = Jsoup.connect("http://www.polyvore.com/bags/shop?category_id=35")
.userAgent("Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36")
.referrer("http://www.google.com").get();
if (doc != null) {
aEles = doc.select("div.title > a");
if (aEles != null)
System.out.println("size: " + aEles.size());
}
} catch (Exception e) {
e.printStackTrace();
}
关于java - 使用 jsoup 在 div 中选择标签的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29502523/