使用 Jsoup 提取特定 table 数据
Extract specific table data using Jsoup
我正在尝试从此 Webpage. 中提取足球赛程,现在我有这段代码可以从该网页的 table 中提取赛程。
private class LoadFixtures extends AsyncTask<Void,Void,Void> {
String stringDT="",stringHome="",stringAway="";
String url = "http://www.bbc.com/sport/football/spanish-la-liga/fixtures";
String stringTime="";
@Override
protected Void doInBackground(Void... params) {
Document doc = null;
try {
doc = Jsoup.connect(url).timeout(0).get();
Elements matchDetails = doc.select("td.match-details");
Elements ele_hTeam = matchDetails.select("span.team-home.teams");
Elements ele_aTeam = doc.select("span.team-away.teams");
Elements ele_time = doc.select("td.kickoff");
int tsize = ele_hTeam.size();
for(int i=0;i<tsize;i++) {
stringTime+="\n\n"+ele_time.get(i).text();
stringHome+="\n\n"+ele_hTeam.get(i).text();
stringAway+="\n\n"+ele_aTeam.get(i).text();
}
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Void aVoid) {
homeTeam.setText(stringHome);
awayTeam.setText(stringAway);
timeView.setText(stringTime);
super.onPostExecute(aVoid);
}
}
此代码为我提供了完整的灯具列表,但我想要做的只是提取特定日期的灯具。例如,假设我只想从 2016 年 1 月 16 日星期六
提取固定装置
下面的代码将按照您的要求执行。我只是提供了一个包含您要查找的日期的字符串变量。下面的代码在页面上的每个 table 上循环。每个 table 将包含 x 个灯具。如果 table 的标题包含您提供的日期,它将输入此 table 并允许您 select 主队和客队。希望这对您有所帮助!
String dateLookup= "16th January 2016";
String url = "http://www.bbc.com/sport/football/spanish-la-liga/fixtures";
try {
Document document = Jsoup.connect(url).timeout(0).get();
Elements tableElements = document.select("table.table-stats");
for (Element e : tableElements) {
if (e.select("caption").text().contains(dateLookup)) {
Elements matchElements = e.select("tr.preview");
for (Element match : matchElements) {
System.out.println("Home Team: " + match.select("span.team-home").text());
System.out.println("Away Team: " + match.select("span.team-away").text() + "\n");
}
}
}
} catch (IOException e) {
e.printStackTrace();
}
我正在尝试从此 Webpage. 中提取足球赛程,现在我有这段代码可以从该网页的 table 中提取赛程。
private class LoadFixtures extends AsyncTask<Void,Void,Void> {
String stringDT="",stringHome="",stringAway="";
String url = "http://www.bbc.com/sport/football/spanish-la-liga/fixtures";
String stringTime="";
@Override
protected Void doInBackground(Void... params) {
Document doc = null;
try {
doc = Jsoup.connect(url).timeout(0).get();
Elements matchDetails = doc.select("td.match-details");
Elements ele_hTeam = matchDetails.select("span.team-home.teams");
Elements ele_aTeam = doc.select("span.team-away.teams");
Elements ele_time = doc.select("td.kickoff");
int tsize = ele_hTeam.size();
for(int i=0;i<tsize;i++) {
stringTime+="\n\n"+ele_time.get(i).text();
stringHome+="\n\n"+ele_hTeam.get(i).text();
stringAway+="\n\n"+ele_aTeam.get(i).text();
}
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Void aVoid) {
homeTeam.setText(stringHome);
awayTeam.setText(stringAway);
timeView.setText(stringTime);
super.onPostExecute(aVoid);
}
}
此代码为我提供了完整的灯具列表,但我想要做的只是提取特定日期的灯具。例如,假设我只想从 2016 年 1 月 16 日星期六
提取固定装置下面的代码将按照您的要求执行。我只是提供了一个包含您要查找的日期的字符串变量。下面的代码在页面上的每个 table 上循环。每个 table 将包含 x 个灯具。如果 table 的标题包含您提供的日期,它将输入此 table 并允许您 select 主队和客队。希望这对您有所帮助!
String dateLookup= "16th January 2016";
String url = "http://www.bbc.com/sport/football/spanish-la-liga/fixtures";
try {
Document document = Jsoup.connect(url).timeout(0).get();
Elements tableElements = document.select("table.table-stats");
for (Element e : tableElements) {
if (e.select("caption").text().contains(dateLookup)) {
Elements matchElements = e.select("tr.preview");
for (Element match : matchElements) {
System.out.println("Home Team: " + match.select("span.team-home").text());
System.out.println("Away Team: " + match.select("span.team-away").text() + "\n");
}
}
}
} catch (IOException e) {
e.printStackTrace();
}