JSOUP获得一个无序列表

时间:2012-08-18 18:58:46

标签: java jsoup

我正在发布此消息。 我试图提取无序列表。在上一个问题中,我的fomrat不正确。 我尝试提取数据的网站格式正确。

<ul>
<li>
<i>
<a class="mw-redirect" title="title1" href="yahoo.com">used to be a best email</a>
</i>
(1999)
</li>
<li>
<i>
<a title="title2" href="google.com">Best search enginee We Will Go</a>
</i>
(1999)
</li>
<li>
<i>
<a title="title3" href="apple.com">Best Phone</a>
</i>
(1990)
</li>
</ul>

我想打印:

TITLE1

google.com

yahoo.com

= 曾经是一封最好的电子邮件 最好的搜索电子邮件将去 Bestphone

类似地所有Hrefs。

我确实看到了JSOUP文档。

相关问题: jsoup to get the data in a unorderedlist 但这就是格式问题。

我按照建议尝试了,但它无法正常工作

我试过了:

Document doc = Jsoup.connect(url).get();             
Element link = doc.select("a").last();
String title1 = link.attr("title");

问题是这是一个包含一些信息的大页面。因为有许多无序列表..

1 个答案:

答案 0 :(得分:7)

如果您更好地格式化并指定您的要求,也许我的回答会更准确,这是您要找的吗?

public static void main(String[] args) throws IOException
    {
        String html = "<ul><li><i><a class=\"mw-redirect\" title=\"title1\" href=\"yahoo.com\">used to be a best email</a></i>(1999)</li><li><i><a title=\"title2\" href=\"google.com\">Best search enginee We Will Go</a></i>(1999)</li><li><i><a title=\"title3\" href=\"apple.com\">Best Phone</a></i>(1990)</li></ul>";

        Document doc = Jsoup.parse(html);

        Elements links = doc.select("ul li i a");

        for (Element element : links) {
            System.out.format("%s %s %s\n", element.attr("title"), element.attr("href"), element.text());
        }
    }

如果没有在你的问题中添加样本输出部分。

更新:

工作原理。 ul li i a是一个css选择器。这意味着将位于a内的每个i元素包含在li标记中,该ul标记包含在doc.select("a")标记中。 (可怕的解释)

您也可以从{{1}}获得相同的结果。但是具体是更好的,因为你从一些网站解析这些数据,因为链接可以在不同的地方,不同的id / class或者其他什么,你正在寻找这些特定的。

如果选定的元素具有标题,超链接和文本值,则会输出该数据。