该行包含
行号 - 姓氏姓氏 - 指导员姓名 - E
</tr>
<tr height=20 style='height:15.0pt'>
<td height=20 class=xl6429100 align=right width=28 style='height:15.0pt;
border-top:none;width:21pt'>row number</td>
<td class=xl8629100 width=19 style='border-top:none;border-left:none;
width:14pt'> </td>
<td class=xl6529100 width=137 style='border-top:none;border-left:none;
width:103pt'>name</td>
<td class=xl6529100 width=92 style='border-top:none;border-left:none;
width:69pt'>surname</td>
<td class=xl7929100 style='border-top:none;border-left:none'>instructor name</td>
<td class=xl8129100 style='border-top:none'>grade</td>
我想从这个html文件中只检索一行来控制我自己的等级。我通过使用java获取html的源代码,但现在我如何才能到达我想要的行?我会先找到姓氏。在这部分表格中,我如何才能达到等级颜色?
这是我的代码;
import java.net.*;
import java.io.*;
public class staj {
public static void main(String[] args) throws Exception {
URL staj = new URL("http://www.cs.bilkent.edu.tr/~sekreter/SummerTraining/2014G/CS399.htm");
BufferedReader in = new BufferedReader(new InputStreamReader(staj.openStream()));
String inputLine;
String grade;
while ((inputLine = in.readLine()) != null){
if(inputLine.contains(mysurname))
//grade = WHAT?
}
in.close();
}
而且,是否正在使用java高效且适合此目的?哪种语言会更好?
答案 0 :(得分:2)
您绝对应该使用Jsoup
库从HTML文档中提取所需内容 - http://jsoup.org/
我创建了一个示例代码,演示了从您在说明中提供的表中提取数据的示例:https://gist.github.com/wololock/15f511fd9d7da9770f1d
public static void main(String[] args) throws IOException {
String url = "http://www.cs.bilkent.edu.tr/~sekreter/SummerTraining/2014G/CS399.htm";
String username = "Samet";
Document document = Jsoup.connect(url).get();
Elements rows = document.select("tr:contains("+username+")");
for (Element row : rows) {
System.out.println("---------------");
System.out.printf("No: %s\n", row.select("td:eq(0)").text());
System.out.printf("Evaluator: %s\n", row.select("td:eq(4)").text());
System.out.printf("Status: %s\n", row.select("td:eq(5)").text());
}
}
看看这个:
document.select("tr:contains("+username+")");
Jsoup
允许您使用类似jquery的方法和选择器从html文档中提取数据。在此示例选择器中,您仅提取嵌套元素中包含给定用户名的tr
个元素。当您有这些行的列表时,您可以简单地提取数据。我们在这里使用:
row.select("td:eq(n)")
其中:eq(n)
表示选择嵌套在tr 中的第n个td元素。这是输出:
---------------
No: 85
Evaluator: Buğra Gedik
Status: E
---------------
No: 105
Evaluator: Çiğdem Gündüz Demir
Status: E