我正在尝试使用 Jaunt ( https://ravit.is.fi/hevoset/1 ) 抓取一个网站,但在找到正确的表格元素来解析此表格时遇到问题(红色:https://i. imgur.com/JWNByHR.png )
从 html 中,我假设正确的元素是 < table border=\"0\" cellpadding=\"3\" cellspacing=\"1\"> 但标记为绿色的表格也使用相同的元素,所以会是什么“选择”正确表格的方法?尝试了很多东西都无济于事,但由于我对 java、html 和一般编码都很陌生,我很可能错过了一些明显的东西
另外,我尝试将另一个表中的数据放到 xls 表中,但所有内容都转到同一个单元格,所以你需要做什么,它看起来像这样:https ://i.imgur.com/2TF4mO4.png ?
先感谢您
public class JauntTesti{
public static void main(String[] args){
int sivu = 1;
while (true) {
try{
UserAgent userAgent = new UserAgent();
if (sivu <= 1) {
userAgent.visit("https://ravit.is.fi/hevoset/" + sivu);
String title = userAgent.doc.findFirst("<title>").getChildText(); //hakee ekan löytyvän otsikon stringiin title
System.out.println("\n" + sivu);
Element body = userAgent.doc.findFirst("<body>");
Element strong = body.findEach("<strong>");
Element strong2 = userAgent.doc.findEach("<td>");
Element strong3 = strong2.getElement(0).getElement(0).getElement(1).getElement(0).getElement(0).getElement(0).getElement(0).getElement(0).getElement(0).getElement(0).getElement(1);
Element strong4 = strong2.getElement(0).getElement(0).getElement(1).getElement(0).getElement(0).getElement(0).getElement(0).getElement(0).getElement(0).getElement(1).getElement(1);
Element strong5 = strong2.getElement(0).getElement(0).getElement(1).getElement(0).getElement(0).getElement(0).getElement(0).getElement(0).getElement(0).getElement(2).getElement(1);
Element strong6 = strong2.getElement(0).getElement(0).getElement(1).getElement(0).getElement(0).getElement(0).getElement(0).getElement(0).getElement(0).getElement(3).getElement(1);
Element strong7 = strong2.getElement(0).getElement(0).getElement(1).getElement(0).getElement(0).getElement(0).getElement(0).getElement(0).getElement(0).getElement(4).getElement(1);
Element strong8 = strong2.getElement(0).getElement(0).getElement(1).getElement(0).getElement(0).getElement(0).getElement(0).getElement(0).getElement(0).getElement(5).getElement(1);
Element test1 = strong2.getElement(0).getElement(0).getElement(1).getElement(0).getElement(0).getElement(0).getElement(0).getElement(0).getElement(0).getElement(0).getElement(0);
Element test2 = strong2.getElement(0).getElement(0).getElement(1).getElement(0).getElement(0).getElement(0).getElement(0).getElement(0).getElement(0).getElement(1).getElement(0);
Element test3 = strong2.getElement(0).getElement(0).getElement(1).getElement(0).getElement(0).getElement(0).getElement(0).getElement(0).getElement(0).getElement(2).getElement(0);
Element test4 = strong2.getElement(0).getElement(0).getElement(1).getElement(0).getElement(0).getElement(0).getElement(0).getElement(0).getElement(0).getElement(3).getElement(0);
Element test5 = strong2.getElement(0).getElement(0).getElement(1).getElement(0).getElement(0).getElement(0).getElement(0).getElement(0).getElement(0).getElement(4).getElement(0);
Element test6 = strong2.getElement(0).getElement(0).getElement(1).getElement(0).getElement(0).getElement(0).getElement(0).getElement(0).getElement(0).getElement(5).getElement(0);
String nimi = strong3.innerText();
String laji = strong4.innerText();
String sukupuoli = strong5.innerText();
String ika = strong6.innerText();
String valmentaja = strong7.innerText();
String omistaja = strong8.innerText();
while (true) {
if (test4.innerHTML().equals("<strong>IKÄ:</strong> ")){
ika = strong6.innerText();
break;
}
ika = " ";
break;
}
while (true) {
if (test4.innerHTML().equals("<strong>VALMENTAJA:</strong> ")){
valmentaja = strong6.innerText();
break;
}
if (test5.innerHTML().equals("<strong>VALMENTAJA:</strong> ")){
valmentaja = strong7.innerText();
break;
}
valmentaja = "-1";
break;
}
while (true) {
if (test4.innerHTML().equals("<strong>OMISTAJA:</strong> ")){
omistaja = strong6.innerText();
break;
}
if (test5.innerHTML().equals("<strong>OMISTAJA:</strong> ")){
omistaja = strong7.innerText();
break;
}
if (test6.innerHTML().equals("<strong>OMISTAJA:</strong> ")){
omistaja = strong8.innerText();
break;
}
omistaja = "-1";
break;
}
Table taulukko2 = userAgent.doc.getTable("<table border=\"0\" cellpadding=\"3\" cellspacing=\"1\">");
Elements taul1 = taulukko2.getCol(0);
for(Element element : taul1) System.out.println(taul1.innerText());
ika = ika.replace(" v","");
//int ikav = Integer.parseInt(ika);
System.out.println("Nimi: " + nimi);
System.out.println("Laji: " + laji);
System.out.println("Sukupuoli: " + sukupuoli);
System.out.println("Ikä: " + ika);
System.out.println("Valmentaja: " + valmentaja);
System.out.println("Omistaja: " + omistaja);
try {
String filename = "C:/sheets/" + sivu + ".xls";
HSSFWorkbook workbook = new HSSFWorkbook();
HSSFSheet sheet = workbook.createSheet("FirstSheet");
sheet.setColumnWidth(0, 5000);
sheet.setColumnWidth(1, 5000);
sheet.setColumnWidth(2, 3000);
sheet.setColumnWidth(3, 2000);
sheet.setColumnWidth(4, 4000);
sheet.setColumnWidth(5, 8000);
HSSFRow rowhead = sheet.createRow((short)0);
rowhead.createCell(0).setCellValue("NIMI");
rowhead.createCell(1).setCellValue("LAJI");
rowhead.createCell(2).setCellValue("SUKUPUOLI");
rowhead.createCell(3).setCellValue("IKÄ");
rowhead.createCell(4).setCellValue("VALMENTAJA");
rowhead.createCell(5).setCellValue("OMISTAJA");
//rowhead.createCell(6).setCellValue(taul1.innerText());
HSSFRow row = sheet.createRow((short)1);
row.createCell(0).setCellValue(nimi);
row.createCell(1).setCellValue(laji);
row.createCell(2).setCellValue(sukupuoli);
row.createCell(3).setCellValue(ika);
row.createCell(4).setCellValue(valmentaja);
row.createCell(5).setCellValue(omistaja);
FileOutputStream fileOut = new FileOutputStream(filename);
workbook.write(fileOut);
fileOut.close();
workbook.close();
} catch ( Exception ex ) {
System.out.println(ex);
}
sivu++;
} else {
break;
}
}
catch(JauntException e){
System.err.println(e);
}
}
}
}