Java新手,我最近开始学习如何使用Java从网站读取HTML,但我一直在尝试学习如何解析它并提取元素(有用的数据)。我一直在寻找最好的方法来做到这一点,Jsoup一直在上升,所以我决定尝试一下。我能够拉出表格元素,但是有很多无用的HTML可以很好地删除..我如何从这个网站拉出表格,只是让行元素与Jsoup有一个简单的方法?
String html = "http://beta.letsplaysoccer.com/facilities/26/teams/187822";
Document doc = Jsoup.connect(html).get();
Elements tableElements = doc.select("table");
System.out.print(tableElements);
感谢您的帮助!
编辑:无用的HTML,如标签,类名等。如果我想使用这个表格数据,我只想用比赛来说比赛日期或不是
<td> <a href="/facilities/26/games?exact_date=14-03-30">Sun 03-30-14 07:25 PM</a></td>
我最终想做的是将这些数据存入我自己的GUI或其他东西
答案 0 :(得分:1)
jsoup有所帮助,但您需要手动浏览所有HTML,这有点痛苦......
例如,可以在第一张表格中打印出与其得分相关的游戏:
import java.io.IOException;
import java.util.List;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.nodes.Node;
import org.jsoup.select.Elements;
import org.junit.Test;
public class JSoupTest {
@Test
public void testJSoup() throws IOException {
String html = "http://beta.letsplaysoccer.com/facilities/26/teams/187822";
Document doc = Jsoup.connect(html).get();
Elements tableElements = doc.select("table");
Element firstTable = tableElements.get(0);
List<Node> firstTableRows = firstTable.childNodes().get(1).childNodes();
int numRows = firstTableRows.size();
// skip first row as header
for (int i = 1; i < numRows; i++) {
Node row = firstTableRows.get(i);
if (row instanceof Element) {
Node homeTeam = row.childNode(5).childNode(1).childNode(0);
Node visitorTeam = row.childNode(7).childNode(1).childNode(0);
// some are in bold
if(visitorTeam.childNodeSize() > 0 ){
visitorTeam = visitorTeam.childNode(0);
}
Node score = row.childNode(9).childNode(0);
System.out.println(homeTeam + " vs " + visitorTeam + ": " + score);
}
}
}
}