在 <ul> 标签 Java 内迭代 <div> - Jsoup
Iterate <div> inside <ul> tag Java - Jsoup
我正在尝试使用 jsoup 将所有 <div>
放入 <ul>
标签中。
这是HTML
<html>
<head>
<title>Try jsoup</title>
</head>
<body>
<ul class="product__listing product__grid">
<div class="product-item">
<div class="content-thumb_gridpage">
<a class="thumb" href="index1.html" title="Tittle 1">
</div>
</div>
<div class="product-item">
<div class="content-thumb_gridpage">
<a class="thumb" href="index2.html" title="Tittle 2">
</div>
</div>
<div class="product-item">
<div class="content-thumb_gridpage">
<a class="thumb" href="index3.html" title="Tittle 3">
</div>
</div>
</ul>
</body>
</html>
我要迭代的是所有 <div class="product-item">
,这样我就可以将所有 <a class="thumb">
属性添加到列表中
List-product-details
[0] href="index1.html" title="Tittle 1"
[1] href="index2.html" title="Tittle 2"
[2] href="index3.html" title="Tittle 3"
注意可以有'N'product-item
div
这是我目前得到的:
Elements productList = sneakerList.select("ul.product__listing product__grid");
Elements product = productList.select("ul.product-item");
for (int i = 0; i < product.size(); i++) {
Elements productInfo = product.get(i).select("div.product-item").select("div.content-thumb_gridpage").select("a.thumb");
System.out.format("%s %s %s\n", productInfo.attr("title"), productInfo.attr("href"), productInfo.text());
}
您是否尝试过逐行调试并检查您的代码在哪一行没有达到您的预期?
我看到两个错误。
- 第一个 select 或
"ul.product__listing product__grid"
包含一个 space。现在它意味着:用 class product__listing
查找元素 ul
并在内部搜索元素 <product__grid> </product__grid>
。您的意思可能是:select 元素 ul
具有 class product__listing
和 class product__grid
。您必须在第二个 class 名称之前使用点 .
并删除 space 以查看同一级别。所以正确 select 或将是:"ul.product__listing.product__grid"
.
- 第二个select或者您使用的是
"ul.product-item"
。它将 return 为空结果。那是因为您已经在 ul
中并且正在寻找另一个 ul
。选择器应该与您所在的位置相关,因此仅使用 ".product-item"
就足够了。
现在我得到了输出:
Tittle 1 index1.html
Tittle 2 index2.html
Tittle 3 index3.html
我正在尝试使用 jsoup 将所有 <div>
放入 <ul>
标签中。
这是HTML
<html>
<head>
<title>Try jsoup</title>
</head>
<body>
<ul class="product__listing product__grid">
<div class="product-item">
<div class="content-thumb_gridpage">
<a class="thumb" href="index1.html" title="Tittle 1">
</div>
</div>
<div class="product-item">
<div class="content-thumb_gridpage">
<a class="thumb" href="index2.html" title="Tittle 2">
</div>
</div>
<div class="product-item">
<div class="content-thumb_gridpage">
<a class="thumb" href="index3.html" title="Tittle 3">
</div>
</div>
</ul>
</body>
</html>
我要迭代的是所有 <div class="product-item">
,这样我就可以将所有 <a class="thumb">
属性添加到列表中
List-product-details
[0] href="index1.html" title="Tittle 1"
[1] href="index2.html" title="Tittle 2"
[2] href="index3.html" title="Tittle 3"
注意可以有'N'product-item
div
这是我目前得到的:
Elements productList = sneakerList.select("ul.product__listing product__grid");
Elements product = productList.select("ul.product-item");
for (int i = 0; i < product.size(); i++) {
Elements productInfo = product.get(i).select("div.product-item").select("div.content-thumb_gridpage").select("a.thumb");
System.out.format("%s %s %s\n", productInfo.attr("title"), productInfo.attr("href"), productInfo.text());
}
您是否尝试过逐行调试并检查您的代码在哪一行没有达到您的预期? 我看到两个错误。
- 第一个 select 或
"ul.product__listing product__grid"
包含一个 space。现在它意味着:用 classproduct__listing
查找元素ul
并在内部搜索元素<product__grid> </product__grid>
。您的意思可能是:select 元素ul
具有 classproduct__listing
和 classproduct__grid
。您必须在第二个 class 名称之前使用点.
并删除 space 以查看同一级别。所以正确 select 或将是:"ul.product__listing.product__grid"
. - 第二个select或者您使用的是
"ul.product-item"
。它将 return 为空结果。那是因为您已经在ul
中并且正在寻找另一个ul
。选择器应该与您所在的位置相关,因此仅使用".product-item"
就足够了。
现在我得到了输出:
Tittle 1 index1.html
Tittle 2 index2.html
Tittle 3 index3.html