Example usage for org.jsoup.select Elements hasText

List of usage examples for org.jsoup.select Elements hasText

Introduction

In this page you can find the example usage for org.jsoup.select Elements hasText.

Prototype

public boolean hasText() 

Source Link

Document

Test if any matched Element has any text content, that is not just whitespace.

Usage

From source file:noThreads.Menu.java

public void createMenu() throws IOException, InterruptedException {
    Document doc = null;/*from   w w w  .  j a va2  s  .  c  o m*/
    BufferedReader br = null;

    System.out.print("******************** Menu Options ******************** "
            + "\n1. Get a playlist for all the stations at <e-radio.gr>"
            + "\n2. View the available station Categories and get a playlist."
            + "\n3. View the available station Locations and get a playlist."
            + "\n4. View the station Ratings (Top) and get a playlist." + "\n5. Exit." + "\n\n"
            + "Please make a choice (1-5): ");
    br = new BufferedReader(new InputStreamReader(System.in));

    try {
        choice = Integer.parseInt(br.readLine());
    } catch (IOException e) {
        System.out.println("Error!");
        System.exit(1);
    }

    switch (choice) {
    case (1): //GET all the e-radio location links (in order to get all the links)
        doc = parseUrl(URL, 0);

        if (doc == null) {
            print("No connection to the server! Exiting...");
            System.exit(1);
        }

        Elements links = doc.select("div[id=paneContainer]").select("a[href*=/locations/]");

        for (Element link : links)
            theUrls.add(link.attr("abs:href"));
        System.out.println("...Processing <All e-radio> station links");
        break;

    case (2): //Get CATEGORIES
        doc = parseUrl(URL, 0);

        if (doc == null) {
            print("No connection to the server! Exiting...");
            System.exit(1);
        }

        Elements categoryLinks = doc.select("div[id=paneContainer]").select("a[href*=/categories/]");

        System.out.println("E-radio stations available categories: " + "\n");
        for (int i = 0; i < categoryLinks.size(); i++) {
            System.out.println(i + 1 + ".  " + StringEscapeUtils.unescapeHtml4(categoryLinks.get(i).html()));
        }
        System.out.print("\n" + "Please make a choise (1-" + categoryLinks.size() + "): ");

        br = new BufferedReader(new InputStreamReader(System.in));
        try {
            choice = Integer.parseInt(br.readLine());
        } catch (IOException e) {
            System.out.println("Error!");
            System.exit(1);
        }
        if (choice <= categoryLinks.size() && choice >= 1) {
            theUrls.add(categoryLinks.get(choice - 1).attr("abs:href"));
            System.out.println("...Processing the <"
                    + StringEscapeUtils.unescapeHtml4(categoryLinks.get(choice - 1).html()) + "> category");
        } else {
            System.out.println("Wrong selection...");
            System.out.println("Exiting program...");
            System.exit(1);
        }

        break;

    case (3)://Get LOCATIONS
        doc = parseUrl(URL, 0);

        if (doc == null) {
            print("No connection to the server! Exiting...");
            System.exit(1);
        }

        Elements locationLinks = doc.select("div[id=paneContainer]").select("a[href*=/locations/]");

        System.out.println("E-radio stations available locations: " + "\n");
        for (int i = 0; i < locationLinks.size(); i++) {
            System.out.println(i + 1 + ".  " + StringEscapeUtils.unescapeHtml4(locationLinks.get(i).html()));
        }
        System.out.print("\n" + "Please make a choise (1-" + locationLinks.size() + "): ");

        br = new BufferedReader(new InputStreamReader(System.in));
        try {
            choice = Integer.parseInt(br.readLine());
        } catch (IOException e) {
            System.out.println("Error!");
            System.exit(1);
        }
        if (choice <= locationLinks.size() && choice >= 1) {
            theUrls.add(locationLinks.get(choice - 1).attr("abs:href"));
            System.out.println("...Processing <"
                    + StringEscapeUtils.unescapeHtml4(locationLinks.get(choice - 1).html()) + "> locatino");
        } else {
            System.out.println("Wrong selection!");
            System.out.println("Exiting program...");
            System.exit(1);
        }

        break;

    case (4):
        final int YEARLY_RATING = 10;
        doc = parseUrl(URL, 0);

        if (doc == null) {
            print("No connection to the server! Exiting...");
            System.exit(1);
        }

        Elements ratingsMenu = doc.select("div[class=menuFly]").select("li").select("a[class=hide]");

        print("\nStations ratings: \n");

        for (int i = 0; i < ratingsMenu.size(); i++) {
            System.out.println(i + 1 + ".  " + StringEscapeUtils.unescapeHtml4(ratingsMenu.get(i).html()));
        }
        System.out.print("\n" + "Please make a choise (1-" + ratingsMenu.size() + "): ");

        br = new BufferedReader(new InputStreamReader(System.in));
        try {
            choice = Integer.parseInt(br.readLine());
        } catch (IOException e) {
            System.out.println("Error!");
            System.exit(1);
        }

        /*
         * The html of the Ratings menu processed 
         * has this structure:
         * <div>
         *    <ul>
         *       <li>
         *          <ul>
         *             ...
         *          </ul>
         *       </li>
         *       ...
         *    </ul>
         * </div>
         */
        if (choice <= ratingsMenu.size() && choice >= 1) {
            //Get the DIV element with class "menuFly"
            Elements div = doc.select("div[class=menuFly]");
            //div Elements list has only one element. So get the children of div
            Elements ul = div.get(0).children();
            //ul Elements list has only one element. So get the children of ul
            Elements li = ul.get(0).children();

            //remove blank elements
            for (int j = 0; j < li.size(); j++) {
                if (li.get(j).hasText() == false)
                    li.remove(li.get(j));
            }

            //get the title of user choice and print it out
            print("\n%s", StringEscapeUtils.unescapeHtml4(ratingsMenu.get(choice - 1).html()) + "\n");
            //check if there is a sub-menu
            Elements ulTag = li.get(choice - 1).select("ul");
            if (ulTag.hasText() == true) {
                Elements subMenu = ulTag.select("li").select("a[href]");

                //print the sub-menu
                for (int j = 0; j < subMenu.size(); j++)
                    print("%s.  %s ", j + 1, StringEscapeUtils.unescapeHtml4(subMenu.get(j).html()));

                System.out.print("\n" + "Please make a choise (1-" + subMenu.size() + "): ");

                //read user input
                br = new BufferedReader(new InputStreamReader(System.in));
                try {
                    choice = Integer.parseInt(br.readLine());
                } catch (IOException e) {
                    System.out.println("Error!");
                    System.exit(1);
                }

                if (choice <= subMenu.size() && choice >= 1) {
                    theUrls.add(subMenu.get(choice - 1).attr("abs:href"));
                    System.out.println("...Processing the <"
                            + StringEscapeUtils.unescapeHtml4(subMenu.get(choice - 1).html()) + "> category");
                } else {
                    System.out.println("Wrong selection!");
                    System.out.println("Exiting program...");
                    System.exit(1);
                }
            } else {
                if (choice == YEARLY_RATING) {
                    String url = li.get(choice - 1).select("a[href").attr("abs:href");
                    doc = parseUrl(url, 0);

                    if (doc != null) {
                        Elements yearTopSubMenu = doc.select("div[id=maintabsid]").select("a[href]");

                        //print the sub-menu
                        for (int i = 0; i < yearTopSubMenu.size(); i++)
                            print("%s.  %s", i + 1,
                                    StringEscapeUtils.unescapeHtml4(yearTopSubMenu.get(i).html()));

                        System.out.print("\n" + "Please make a choise (1-" + yearTopSubMenu.size() + "): ");

                        //read user input
                        br = new BufferedReader(new InputStreamReader(System.in));
                        try {
                            choice = Integer.parseInt(br.readLine());
                        } catch (IOException e) {
                            System.out.println("Error!");
                            System.exit(1);
                        }

                        if (choice <= yearTopSubMenu.size() && choice >= 1) {
                            if (choice == 1) {
                                theUrls.add(yearTopSubMenu.get(choice - 1).attr("abs:href"));
                                print("...Processing the <"
                                        + StringEscapeUtils.unescapeHtml4(yearTopSubMenu.get(choice - 1).html())
                                        + "> category");
                            } else if (choice == 2) {
                                String link = yearTopSubMenu.get(choice - 1).attr("abs:href");
                                doc = parseUrl(link, 0);

                                //print menu title
                                print("\n%s",
                                        StringEscapeUtils.unescapeHtml4(yearTopSubMenu.get(choice - 1).html())
                                                + "\n");

                                if (doc != null) {
                                    Elements elem = doc.select("select[id=selectoption]")
                                            .select("option[value]");
                                    ArrayList<Integer> nums = new ArrayList<Integer>();

                                    for (int i = 0; i < elem.size(); i++) {
                                        //get the select category values and print the sub-menu
                                        int num = Integer.parseInt(elem.get(i).attr("value"));
                                        //add them to list
                                        nums.add(num);
                                        print("%s.  %s", i + 1, StringEscapeUtils.unescapeHtml4(
                                                elem.get(i).html().replace("Select category: ", "")));
                                    }

                                    System.out.print("\n" + "Please make a choise (1-" + elem.size() + "): ");

                                    //read user input
                                    br = new BufferedReader(new InputStreamReader(System.in));
                                    try {
                                        choice = Integer.parseInt(br.readLine());
                                    } catch (IOException e) {
                                        System.out.println("Error!");
                                        System.exit(1);
                                    }
                                    if (choice <= elem.size() && choice >= 1) {
                                        int num = nums.get(choice - 1);
                                        String added = "max=100&id=" + num + "&";
                                        String newlink = link.replace("max=100&", added);

                                        //print("\nlink: %s", newlink); DEBUG print

                                        theUrls.add(newlink);
                                        System.out
                                                .println("...Processing the <"
                                                        + StringEscapeUtils.unescapeHtml4(elem.get(choice - 1)
                                                                .html().replace("Select category: ", ""))
                                                        + "> category");
                                        print(elem.get(choice - 1).select("a[href]").attr("abs:href"));
                                    } else {
                                        System.out.println("Wrong selection!");
                                        System.out.println("Exiting program...");
                                        System.exit(1);
                                    }
                                } else {
                                    System.out.println("ERROR: Cannot get links from server!");
                                    System.out.println("Exiting program...");
                                    System.exit(1);
                                }
                            } else {
                                String link = yearTopSubMenu.get(choice - 1).attr("abs:href");
                                doc = parseUrl(link, 0);

                                //print menu title
                                print("\n%s",
                                        StringEscapeUtils.unescapeHtml4(yearTopSubMenu.get(choice - 1).html())
                                                + "\n");

                                if (doc != null) {
                                    Elements elem = doc.select("select[id=selectoption]")
                                            .select("option[value]");
                                    ArrayList<Integer> nums = new ArrayList<Integer>();

                                    for (int i = 0; i < elem.size(); i++) {
                                        //get the select category values and print the sub-menu
                                        int num = Integer.parseInt(elem.get(i).attr("value"));
                                        //add them to list
                                        nums.add(num);
                                        print("%s.  %s", i + 1, StringEscapeUtils.unescapeHtml4(
                                                elem.get(i).html().replace("Select location: ", "")));
                                    }

                                    System.out.print("\n" + "Please make a choise (1-" + elem.size() + "): ");

                                    //read user input
                                    br = new BufferedReader(new InputStreamReader(System.in));
                                    try {
                                        choice = Integer.parseInt(br.readLine());
                                    } catch (IOException e) {
                                        System.out.println("Error!");
                                        System.exit(1);
                                    }
                                    if (choice <= elem.size() && choice >= 1) {
                                        int num = nums.get(choice - 1);
                                        String[] linkParts = link.split("&", 4);
                                        String finalLink = linkParts[0] + "&" + linkParts[1] + "&" + "id=" + num
                                                + "&" + linkParts[3];

                                        //print("\nlink: %s \n link2: %s \n link3: %s \n link: %s \nsize: %s", linkParts[0], linkParts[1], linkParts[2], linkParts[3], linkParts.length); // DEBUG print
                                        //print(finalLink);

                                        theUrls.add(finalLink);
                                        System.out
                                                .println("...Processing the <"
                                                        + StringEscapeUtils.unescapeHtml4(elem.get(choice - 1)
                                                                .html().replace("Select category: ", ""))
                                                        + "> category");
                                        print(elem.get(choice - 1).select("a[href]").attr("abs:href"));
                                    } else {
                                        System.out.println("Wrong selection!");
                                        System.out.println("Exiting program...");
                                        System.exit(1);
                                    }
                                } else {
                                    System.out.println("ERROR: Cannot get links from server!");
                                    System.out.println("Exiting program...");
                                    System.exit(1);
                                }
                            }
                        } else {
                            System.out.println("Wrong selection!");
                            System.out.println("Exiting program...");
                            System.exit(1);
                        }
                    } else {
                        System.out.println("ERROR: Cannot get links from server!");
                        System.out.println("Exiting program...");
                        System.exit(1);
                    }
                } else {
                    theUrls.add(li.get(choice - 1).select("a[href").attr("abs:href"));
                    System.out.println("...Processing the <"
                            + StringEscapeUtils.unescapeHtml4(ratingsMenu.get(choice - 1).html())
                            + "> category");
                    print(li.get(choice - 1).select("a[href]").attr("abs:href"));
                }
            }
        } else {
            System.out.println("Wrong selection!");
            System.out.println("Exiting program...");
            System.exit(1);
        }
        break;

    case (5):
        System.out.println("Exiting program...");
        System.exit(0);
        break;

    default:
        System.out.println("Invalid choice! Exiting...");
        System.exit(1);
        break;

    }
}