Я создаю веб-искатель на Java с помощью jsoup (используя этот tutorial).Веб-Crawler заблокирован по ссылке электронной почты
Проблема, с которой я сталкиваюсь, заключается в том, что искатель берет в цикл Элемент каждую ссылку, некоторые из которых являются адресом электронной почты. Поэтому, когда я пытаюсь использовать Jsoup.connect(URL)
по адресу электронной почты, я получаю сообщение об ошибке, указывающее только на использование запросов http или https.
Как я могу остановить свою программу для выполнения рекурсии при получении ссылки на адрес электронной почты?
Вот основной код:
public class Main {
public static DB db = new DB();
public static void main(String[] args) throws SQLException, IOException{
db.runSql2("TRUNCATE Record;");
processPage("http://www.mit.edu");
}
public static void processPage(String URL) throws SQLException,IOException{
String sql = "select * from Record where URL = '" +URL+"'";
ResultSet rs = db.runSql(sql);
if(rs.next()){
} else {
sql = "INSERT INTO `Crawler`.`Record` " + "(`URL`) VALUES " + "(?);";
PreparedStatement stmt = db.conn.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);
stmt.setString(1,URL);
stmt.execute();
Document doc = Jsoup.connect(URL).get();
if(doc.text().contains("research")){
System.out.println(URL);
}
Elements questions = doc.select("a[href]");
for(Element link:questions){
if(link.attr("href").contains("mit.edu")){
System.out.println(link.attr("abs:href"));
processPage(link.attr("abs:href"));
}
}
}
}
}
Спасибо! Я добавил условие startswith http, и оно работает. Я также добавил попытку catch на рекурсивном вызове processPage, потому что у меня есть некоторые ссылки на изображения, которые Jsoup не может проанализировать в html. Я действительно не знаю, как остановить это. ^^ PS: Это было не задание, которое я просто хочу изучить – Sacha