我写了一个Web爬网程序,该爬网程序应该通过一个域名下的所有超链接进行爬网。我在一个非常简单的网页上进行了尝试,但可以正常工作,但是当我在一个复杂的网站上进行尝试时,它运行了半个小时,最后返回了此错误。无法从堆栈溢出中恢复。
有人可以帮忙看看主要功能,看看是否有什么问题吗?
String insertQuery = "insert into profsched values (?,?,?,?,?,?,?,?) ";
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/profsched","root", "");
PreparedStatement pst = con.prepareStatement(insertQuery);
DefaultTableModel model = (DefaultTableModel) jTable2.getModel();
model.setRowCount(0);
pst.setString(1, no.getText());
pst.setString(2, number.getText());
pst.setString(3, day.getSelectedItem().toString());
pst.setString(4, timefrom.getSelectedItem().toString());
pst.setString(5, timeto.getSelectedItem().toString());
pst.setString(6, subject.getText());
pst.setString(7, section.getText());
pst.setString(8, roomno.getText());
JOptionPane.showMessageDialog(null , "Information has been recorded!");
clearFields();
if (){
JOptionPane.showMessageDialog(null , "Information has been recorded!");
clearFields();
}
else{
JOptionPane.showMessageDialog(null, "Information has already recorded!");
clearFields();
}
}catch(SQLException | HeadlessException ex){
JOptionPane.showMessageDialog(null, ex);
} showTableData();
}
答案 0 :(得分:0)
这仅意味着您具有深层递归,并且它用完了堆栈空间。您可以添加一些东西来控制递归深度,也可以将其更改为更具迭代性的方法。这就是为什么具有较小递归深度的简单网站就可以了。
我将使用带有while循环的迭代方法,并将需要处理的任何“新” URL推送到列表中,并且当该列表不为空时,拉出一个进行爬网并重复。