wikipedia使用jsoup抓取纯文本和超链接

问题描述 投票:2回答:1

我有一个Wikipedia元素,看起来像这样,我想用Jsoup抓取。我想将元素放入字符串列表中,并在有可能的情况下将它们分开。目前,我在中的所有子元素中都循环使用Elements,它错过了CCCC和GGGG之类的纯文本。有什么方法可以捕获纯文本以及超链接文本?

<td class="" style="" itemprop="">
<a href="/wiki/%E5%9C%8B%E5%AD%B8%E9%99%A2%E5%A4%A7%E5%AD%B8" title="AAAA">AAAA</a> 
<a href="/wiki/%E6%96%87%E5%AD%A6%E9%83%A8" title="BBBB">BBBB</a>
"CCCC"
<br>
"DDDD"
<a href="/wiki/%E5%A4%A7%E5%AD%A6%E9%99%A2" title="EEEE">EEEE</a>
<a href="/wiki/%E6%96%87%E5%AD%A6%E7%A0%94%E7%A9%B6%E7%A7%91" title="FFFF">FFFF</a> 
<br>
GGGG
</td>

Wikipedia页面看起来像这样(粗体为超链接文本):

[AAAABBBB CCCC

DDDD EEEEFFFF

GGGG

我想创建一个这样的列表:[AAAABBBBCCCC,DDDDEEEEFFFF,GGGGG]

jsoup screen-scraping wikipedia
1个回答
0
投票

在这种特定情况下,您可以对html进行预处理,以简化Jsoup的工作。尝试以下代码:

    String html = "<table><td class=\"\" style=\"\" itemprop=\"\">\n" +
            "<a href=\"/wiki/%E5%9C%8B%E5%AD%B8%E9%99%A2%E5%A4%A7%E5%AD%B8\" title=\"AAAA\">AAAA</a> \n" +
            "<a href=\"/wiki/%E6%96%87%E5%AD%A6%E9%83%A8\" title=\"BBBB\">BBBB</a>\n" +
            "\"CCCC\"\n" +
            "<br>\n" +
            "\"DDDD\"\n" +
            "<a href=\"/wiki/%E5%A4%A7%E5%AD%A6%E9%99%A2\" title=\"EEEE\">EEEE</a>\n" +
            "<a href=\"/wiki/%E6%96%87%E5%AD%A6%E7%A0%94%E7%A9%B6%E7%A7%91\" title=\"FFFF\">FFFF</a> \n" +
            "<br>\n" +
            "GGGG\n" +
            "</td></table>";

    html = html.replace("<br>", "</td><td>");

    Document doc = Jsoup.parse(html);
    var result = doc.select("td").eachText();
    System.out.println(result);
© www.soinside.com 2019 - 2024. All rights reserved.