【问题标题】:Iterate <div> inside <ul> tag Java - Jsoup在 <ul> 标签内迭代 <div> Java - Jsoup
【发布时间】:2021-06-11 08:41:53
【问题描述】:

我正在尝试使用 jsoup 将所有 &lt;div&gt; 放入 &lt;ul&gt; 标记中。

这是 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>

我要迭代的是所有&lt;div class="product-item"&gt;,所以我可以将所有&lt;a class="thumb"&gt; 属性添加到列表中

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());     
    }

【问题讨论】:

    标签: java html jsoup java-11


    【解决方案1】:

    您是否尝试过逐行调试并检查您的代码在哪一行没有达到您的预期? 我看到了两个错误。

    1. 第一个选择器"ul.product__listing product__grid" 包含一个空格。现在它的意思是:使用类product__listing 查找元素ul 并在内部搜索元素&lt;product__grid&gt; &lt;/product__grid&gt;。您可能的意思是:选择元素ul 具有类product__listing 并具有类product__grid。您必须在第二个班级名称之前使用点 . 并删除空格以查看同一级别。所以正确的选择器是:"ul.product__listing.product__grid"
    2. 您使用的第二个选择器是"ul.product-item"。它将返回空结果。那是因为您已经在 ul 中,并且您正在搜索另一个 ul。选择器应该与您所在的位置相关,因此仅使用 ".product-item" 就足够了。

    现在我得到了输出:

    Tittle 1 index1.html
    Tittle 2 index2.html 
    Tittle 3 index3.html 
    

    【讨论】:

      猜你喜欢
      • 2023-03-20
      • 1970-01-01
      • 2012-10-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-28
      • 2014-04-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多