Java-在HTML中获取粗体文本

时间:2014-06-12 09:57:54

标签: java jsoup

我的任务是从定期更新的在线表格中获取定价信息。具体而言,以粗体列出的项目表示最近更新价格的项目。我主要负责那些,并将这些项目的信息传输到公司的数据库中。但是,我在Java中使用HTML表有点新,并且不确定如何过滤粗体项。我注意到他们有强大的"在他们周围标记;我只是不确定如何使用它。我已经尝试过广泛使用谷歌搜索,但我发现的几乎所有问题都是关于写入HTML表而不是从中读取。我发现与我的问题有关的是很多建议使用Jsoup或jQuery。这些对于我想要做的事情是必要的(或者至少使它变得更容易)?

这是我目前为止其中一个表的代码,如果它有帮助,尽管它目前所做的只是显示整个表的HTML。

package cmtabacosPrecios;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;
public class CeutaYMelilla_Cigarillos {
    public static void main(String[] args) throws Exception {

    // Run the getHTML method
    try {
    getHTML("http://www.cmtabacos.es/wwwcmt/listaPrecios.php?&zona=cm&labor=cillos&mostrar_codigo=S");
    }
    catch (Exception ex) {
        System.out.println("Error. Exception has occured.");
    }

    }
    // The getHTML method
    public static String getHTML(String URLToRead) throws Exception {
        URL cmtabacosPrecios = new URL(URLToRead);
        BufferedReader in = new BufferedReader(
                new InputStreamReader(cmtabacosPrecios.openStream()));

        String inputLine;
        while ((inputLine = in.readLine()) != null)
            System.out.println(inputLine);
        in.close();

        // Return HTML as a String
        return inputLine;

    }
}

1 个答案:

答案 0 :(得分:1)

下面是使用jsoup从表中检索数据的示例代码。只需修改它以获取对您很重要的数据。您还可以在project website了解有关jsoup的更多信息,它非常简单而且功能强大。

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

import java.io.IOException;

public class Main {

    public static void main(String[] args) throws IOException {
        Document doc = Jsoup.connect("http://www.cmtabacos.es/wwwcmt/listaPrecios.php?&zona=cm&labor=cillos&mostrar_codigo=S").get();
        Elements tableRows = doc.select("tr");
        for (Element row : tableRows) {
            Elements marca = row.getElementsByClass("marca");
            Elements pvpExp = row.getElementsByClass("pvp_exp");
            Elements pvpPvr = row.getElementsByClass("pvp_pvr");

            if (!marca.isEmpty() && !pvpExp.isEmpty() && !pvpPvr.isEmpty()) {
                System.out.println(marca.get(0).text());
                System.out.println(pvpExp.get(0).text());
                System.out.println(pvpPvr.get(0).text());
            }
        }
    }
}