java - 迭代jsoup中的元素并解析href

标签 java html jsoup href

我无法从一行表数据中获取 href。虽然我能够让它工作,但我想知道是否有人能解释为什么我的代码在这里工作。

for (Element element : result.select("tr")) {
    if (element.select("tr.header.left").isEmpty()) {

        Elements tds = element.select("td");

        //The line below is what I don't understand
        String link = tds.get(0).getElementsByAttribute("href").first().attr("href");

        String position = tds.get(1).text();
     }
}

我之前使用过但不起作用的行如下:

String link = tds.get(0).attr("href");

为什么这一行返回空字符串?我假设这与我如何迭代我通过“tr”选择的元素有关。但是,我不熟悉 Elements 与 Element 的结构。

感谢您的帮助!

最佳答案

Elements就是一个ArrayList<Element>

您必须编写额外代码的原因是 <td>没有 href属性,所以tds.get(0).attr("href");行不通的。您可能正在尝试从 <a> 捕获 href细胞内。较长的工作代码表示:

For the first cell in the row, get the first element with an @href attribute (i.e. a link), and get its @href attribute

尝试以下示例(带有示例文档)以更清楚地展示如何访问子链接:

Element result = Jsoup.parse("<html><body><table><tr><td><a href=\"http://a.com\" /</td><td>Label1</td></tr><tr><td><a href=\"http://b.com\" /></td><td>Label2</td></tr></table></body></html>");

for (Element element : result.select("tr")) {
    if (element.select("tr.header.left").isEmpty()) {

        Elements tds = element.select("td");

        String link = tds.get(0).getElementsByTag("a").attr("href");
        String position = tds.get(1).text();

        System.out.println(link + ", " + position);
    }
}

关于java - 迭代jsoup中的元素并解析href,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36189419/

相关文章:

javascript - 当父级溢出隐藏时绝对定位 UL

javascript - 如何仅使用javascript显示具有向下滑动效果的div

java - JSoup 按属性值抓取 HTML 文档

java - 如何在 Android 应用程序中使用现有数据库

java - 在 JDesktopPane 中添加一个类

html - Watir/Selenium2 在 Internet Explorer 9 中单击 iframe 内的元素后没有任何反应

java - 我有一个函数,在其中我正在使用匿名类运行一个线程,那么如何将值返回给该函数

java - jsoup 文档线程安全吗?

java - 如何使用 JScrollPane 连续滚动

java - 整数除法 : How do you produce a double?