Я думаю, что вы идете по пути «Зачем упрощать, если это может быть сложно?».Я просто смотрю на тот сайт, который вы пытаетесь отменить.Сайт хорошо структурирован и организован.Так что нет необходимости в конкатенации строк, использовании регулярных выражений и выполнении всех операций очистки в конструкторе.Я бы предложил следующие шаги:
- Получить первую страницу и выбрать таблицу со ссылками префикса от A до Z
- Для каждой ссылки из 1. получить страницу префикса ивыберите таблицу со ссылками префикса курса.Например, для префикса A получить ссылки от AAA до AVT
- . Для каждой ссылки префикса курса из 2. получить страницу префикса курса и выбрать таблицу, содержащую ссылки на курс.Например, для AAA, чтобы получить ссылки от AAA 010 до AAA 999
Ваш код может быть что-то вроде:
import java.io.IOException;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
public class JsoupTest {
final static String homePage = "https://erpdnssb.cccs.edu/PRODCCCS/ccns_pub_controller.p_command_processor?"
+ "pi_course_status=A&pi_term_code=201920&pi_search_type=SB_PREFIX";
public static void main(String[] args) {
try {
Document page = Jsoup.connect(homePage).get();
Elements prefixLinks = page.select(".pagebodydiv > table:nth-child(6) tbody tr td a");
for(Element prefix : prefixLinks){
Document prefixPage = Jsoup.connect(prefix.absUrl("href")).get();
Elements coursePrefixLinks = prefixPage.select(".pagebodydiv > table:nth-child(6) tbody tr td a");
for(Element coursePrefix : coursePrefixLinks){
Document coursePrefixPage = Jsoup.connect(coursePrefix.absUrl("href")).get();
Elements courseLinks = coursePrefixPage.select(".pagebodydiv > table:nth-child(6) tbody tr td a");
for(Element course : courseLinks){
Document coursePage = Jsoup.connect(course.absUrl("href")).get();
try{
String courseNr = coursePage.select("tr:contains(Course:)").first().text();
String courseTitle = coursePage.select("tr:contains(Title:)").first().text();
System.out.println(courseNr +"\n" + courseTitle + "\n********************");
}
catch(NullPointerException np){
System.out.println("Broken link, Page not Found");
}
}
}
}
} catch (IOException ex) {
ex.printStackTrace();
}
}
}