在VSCode中运行Web搜寻器,出现错误:无法从堆栈溢出中恢复

时间:2019-11-24 04:22:00

标签: python web-crawler stack-overflow

我写了一个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();
   } 

1 个答案:

答案 0 :(得分:0)

这仅意味着您具有深层递归,并且它用完了堆栈空间。您可以添加一些东西来控制递归深度,也可以将其更改为更具迭代性的方法。这就是为什么具有较小递归深度的简单网站就可以了。

我将使用带有while循环的迭代方法,并将需要处理的任何“新” URL推送到列表中,并且当该列表不为空时,拉出一个进行爬网并重复。