我的任务是从定期更新的在线表格中获取定价信息。具体而言,以粗体列出的项目表示最近更新价格的项目。我主要负责那些,并将这些项目的信息传输到公司的数据库中。但是,我在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;
}
}
答案 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());
}
}
}
}