如何使用Jsoup解析HTMl文件

时间:2015-07-10 08:34:04

标签: java

我有一个html表&想要根据特定条件提取链接文本

<table border="0" cellpadding="3" cellspacing="0" width="100%">
<tbody>
<tr class="dir"><td colspan="2">&nbsp;&nbsp;<a href="http://xyz/">Yogendra sharma</a></td></tr>
<tr>
<td class="f"><a href="abc">abc</a>&nbsp;</td>
<td>
<tt class="con">
<a class="s" href="mno"><span class="l">7</span> mno <b>Hello</b>;</a>
<br>
</tt>
</td></tr>

<tr class="dir"><td colspan="2">&nbsp;&nbsp;<a href="http://xyz/">Yogendra</a></td></tr>
<tr>
<td class="f"><a href="abc">abc</a>&nbsp;</td>
<td>
<tt class="con">
<a class="s" href="mno"><span class="l">7</span> mno <b>Hello</b>;</a>
<br>
</tt>
</td></tr>
</table>

我想打印所有第一个链接文本,即Yogendra Sharma&amp; Yogendra的html文件。

这个文件很大。

我使用java和jsoup,但不能搞清楚。 请帮帮我。

1 个答案:

答案 0 :(得分:1)

您可以尝试以下代码。您需要commons-io-1.3.2.jarjsoup.jar。将html保存为项目的根文件夹中的sample.html

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Iterator;

import org.apache.commons.io.IOUtils;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

public class ExtractFromHTML {

    public static void main(String[] args) throws IOException {

        File input = new File("sample.html");

        InputStream in = new FileInputStream(input);

        String htmlOut = IOUtils.toString(in);

        Document document = Jsoup.parse(htmlOut);

        Elements elementsA = document.select("a");

        Iterator<Element> elementIterator = elementsA.iterator();

        while (elementIterator.hasNext()) {
            Element aElement = elementIterator.next();

            if (aElement.outerHtml().contains("http://xyz/")) {
                System.out.println(aElement.text());
            }

        }
    }
}

输出:

Yogendra sharma
Yogendra