繁体   English   中英

如何使用 Jsoup 遍历此查询?

[英]How to loop through this query using Jsoup?

我想遍历新闻表并获取每一行的标题和评级。 我尝试了不同的选项,但我不明白为什么 select 方法会一次收到所有选项。 我需要让每个新闻块循环。

我用这种方式获取表格链接:Elements elements = document.select("#hnmain > tbody > tr:nth-child(3) > td > table");

这个查询不能在循环中工作,因为它一次获取所有元素。 我需要按顺序获取元素。 这样我就可以这样做:List list = new ArrayList<>();

for (Element element: elements){
     String title = element...
     String rating = element...
     list.add(title);
     list.add(rating);
}

来自 html 的示例数据:

<table border="0" cellpadding="0" cellspacing="0">
 <tbody>
  <tr class="athing" id="33582264">
   <td align="right" valign="top" class="title"><span class="rank">1.</span></td>
   <td valign="top" class="votelinks">
    <center>
     <a id="up_33582264" href="vote?id=33582264&amp;how=up&amp;goto=front%3Fday%3D2022-11-13">
      <div class="votearrow" title="upvote"></div></a>
    </center></td>
   <td class="title"><span class="titleline"><a href="https://upbase.io/">Show HN: I built my own PM tool after trying Trello, Asana, ClickUp, etc.</a><span class="sitebit comhead"> (<a href="from?site=upbase.io"><span class="sitestr">upbase.io</span></a>)</span></span></td>
  </tr>
  <tr>
   <td colspan="2"></td>
   <td class="subtext"><span class="subline"> <span class="score" id="score_33582264">632 points</span> by <a href="user?id=tonypham" class="hnuser">tonypham</a> <span class="age" title="2022-11-13T12:00:06"><a href="item?id=33582264">20 days ago</a></span> <span id="unv_33582264"></span> | <a href="hide?id=33582264&amp;goto=front%3Fday%3D2022-11-13">hide</a> | <a href="item?id=33582264">456&nbsp;comments</a> </span></td>
  </tr>
  <tr class="spacer" style="height:5px"></tr>
  <tr class="athing" id="33584941">
   <td align="right" valign="top" class="title"><span class="rank">2.</span></td>
   <td valign="top" class="votelinks">
    <center>
     <a id="up_33584941" href="vote?id=33584941&amp;how=up&amp;goto=front%3Fday%3D2022-11-13">
      <div class="votearrow" title="upvote"></div></a>
    </center></td>
   <td class="title"><span class="titleline"><a href="https://fathy.fr/html2svg">Forking Chrome to turn HTML into SVG</a><span class="sitebit comhead"> (<a href="from?site=fathy.fr"><span class="sitestr">fathy.fr</span></a>)</span></span></td>
  </tr>

如果我理解你的问题,我认为这段代码对你有用

Document doc = Jsoup.parse("<table border=\"0\" id=\"hnmain\" cellpadding=\"0\" cellspacing=\"0\"> <tbody> <tr class=\"athing\" id=\"33582264\"> <td align=\"right\" valign=\"top\" class=\"title\"><span class=\"rank\">1.</span></td> <td valign=\"top\" class=\"votelinks\"> <center> <a id=\"up_33582264\" href=\"vote?id=33582264&amp;how=up&amp;goto=front%3Fday%3D2022-11-13\"> <div class=\"votearrow\" title=\"upvote\"></div></a> </center></td> <td class=\"title\"><span class=\"titleline\"><a href=\"https://upbase.io/\">Show HN: I built my own PM tool after trying Trello, Asana, ClickUp, etc.</a><span class=\"sitebit comhead\"> (<a href=\"from?site=upbase.io\"><span class=\"sitestr\">upbase.io</span></a>)</span></span></td> </tr> <tr> <td colspan=\"2\"></td> <td class=\"subtext\"><span class=\"subline\"> <span class=\"score\" id=\"score_33582264\">632 points</span> by <a href=\"user?id=tonypham\" class=\"hnuser\">tonypham</a> <span class=\"age\" title=\"2022-11-13T12:00:06\"><a href=\"item?id=33582264\">20 days ago</a></span> <span id=\"unv_33582264\"></span> | <a href=\"hide?id=33582264&amp;goto=front%3Fday%3D2022-11-13\">hide</a> | <a href=\"item?id=33582264\">456&nbsp;comments</a> </span></td> </tr> <tr class=\"spacer\" style=\"height:5px\"></tr> <tr class=\"athing\" id=\"33584941\"> <td align=\"right\" valign=\"top\" class=\"title\"><span class=\"rank\">2.</span></td> <td valign=\"top\" class=\"votelinks\"> <center> <a id=\"up_33584941\" href=\"vote?id=33584941&amp;how=up&amp;goto=front%3Fday%3D2022-11-13\"> <div class=\"votearrow\" title=\"upvote\"></div></a> </center></td> <td class=\"title\"><span class=\"titleline\"><a href=\"https://fathy.fr/html2svg\">Forking Chrome to turn HTML into SVG</a><span class=\"sitebit comhead\"> (<a href=\"from?site=fathy.fr\"><span class=\"sitestr\">fathy.fr</span></a>)</span></span></td> </tr>");
    Elements elements = doc.select("#hnmain .athing");
    for (Element element : elements) {
        String title = element.select(".title").text();
        String rank = element.select(".rank").text();
        
        System.out.println(title + " -- "+rank);
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM