List of usage examples for org.jsoup.nodes Element text
public String text()
From source file:com.rickendirk.rsgwijzigingen.ZoekService.java
private void addDagEnDatum(Wijzigingen wijzigingen, Document doc) { //Dag waarvoor wijzigingen zijn ophalen Element dag = doc.select("body > div > div:nth-child(2) > p > b > span").first(); //Compatibiliteit met andere opmaak, om NPE te voorkomen if (dag == null) { dag = doc.select("body > center:nth-child(2) > div").first(); }//w w w . j a v a 2 s . c o m String dagStr = dag.text().toLowerCase(); // Woorden staan verkeerd om: omwisselen int indexVanSpatie = dagStr.indexOf(" "); String datum = dagStr.substring(0, indexVanSpatie); String rest = dagStr.substring(indexVanSpatie + 1); String dagGoed = rest + " " + datum; wijzigingen.setDagEnDatum(dagGoed); //Stand ophalen: staat in 1e tabel van HTML Element tableDate = doc.select("table").get(0); String dateFullText = tableDate.getElementsContainingOwnText("Stand:").text(); //Deel achter "Stand:" pakken String FullTextSplit[] = dateFullText.split("Stand:"); wijzigingen.setStandZin("Stand van" + FullTextSplit[1]); }
From source file:com.rickendirk.rsgwijzigingen.ZoekService.java
private ArrayList<String> checkerKlas() { ArrayList<String> tempList = new ArrayList<>(); //String halen uit SP String klasTextS = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()) .getString("pref_klas", ""); //Checken of klas niet leeg is if (klasTextS.equals("")) { tempList.add("geenKlas"); return tempList; }/*from www. ja v a2 s . c o m*/ //Eerste teken klas mag geen letter zijn if (Character.isLetter(klasTextS.charAt(0))) { tempList.add("EersteTekenLetter"); return tempList; } //String opsplitsen in 2 delen, om naar hoofdletters te converteren char charcijfer = klasTextS.charAt(0); String klascijfer = String.valueOf(charcijfer); char charafdeling = klasTextS.charAt(1); String klasafdelingBig = String.valueOf(charafdeling).toUpperCase(); //Onderstaand voor hoofdlettercorrectie String klasCorrect; //KlasCorrect is klas na hoofdlettercorrectie switch (klasTextS.length()) { case 2: klasCorrect = klascijfer + klasafdelingBig; break; case 3: char klasabc = klasTextS.charAt(2); String klasabcSmall = String.valueOf(klasabc).toLowerCase(); klasCorrect = klascijfer + klasafdelingBig + klasabcSmall; break; case 4: char klasafdeling2 = klasTextS.charAt(2); String klasafdeling2Big = String.valueOf(klasafdeling2).toUpperCase(); klasabc = klasTextS.charAt(3); klasabcSmall = String.valueOf(klasabc).toLowerCase(); klasCorrect = klascijfer + klasafdelingBig + klasafdeling2Big + klasabcSmall; break; default: tempList.add("klasMeerDan4Tekens"); return tempList; } //Try en catch in het geval dat de internetverbinding mist try { String url = "http://www.rsgtrompmeesters.nl/roosters/roosterwijzigingen/Lijsterbesstraat/subst_001.htm"; Document doc = Jsoup.connect(url).get(); Elements tables = doc.select("table"); if (tables.size() < 2) { //Geen geschikte tabel aanwezig tempList.add("geenTabel"); return tempList; } Element table = tables.get(1); Elements rows = table.select("tr"); //Loop genereren, voor elke row kijken of het de goede tekst bevat //Beginnen bij 4e, bovenstaande is niet belangrijk for (int i = 2; i < rows.size(); i++) { Element row = rows.get(i); Elements cols = row.select("td"); if (cols.get(0).text().contains(klasCorrect)) { String vakOud = Jsoup.parse(cols.get(2).toString()).text(); String docentOud = Jsoup.parse(cols.get(3).toString()).text(); String vakNieuw = Jsoup.parse(cols.get(4).toString()).text(); String docentNieuw = Jsoup.parse(cols.get(5).toString()).text(); //If in geval van uitval, else ingeval van wijziging if (Jsoup.parse(cols.get(6).toString()).text().contains("--")) { //2 opties: wordt verplaatst of valt uit if (Jsoup.parse(cols.get(8).toString()).text().contains("Uitval")) { String wijziging = Jsoup.parse(cols.get(1).toString()).text() + "e uur " + Jsoup.parse(cols.get(2).toString()).text() + " valt uit"; tempList.add(wijziging); } else { //Uur wordt verplaatst String wijziging = Jsoup.parse(cols.get(1).toString()).text() + "e uur " + "wordt verplaatst naar " + Jsoup.parse(cols.get(8).toString()).text(); tempList.add(wijziging); } } else if (vakOud.equals(vakNieuw) && docentOud.equals(docentNieuw)) { String wijziging = Jsoup.parse(cols.get(1).toString()).text() + "e uur " + vakOud + " wordt verplaatst naar " + Jsoup.parse(cols.get(6).toString()).text(); tempList.add(wijziging); } else { String wijzigingKaal; if (vakOud.equals(vakNieuw) && !docentOud.equals(docentNieuw)) { // Opvang door andere docent: dit staat alleen bij klas omdat // dit amper gebeurt bij clusters wijzigingKaal = Jsoup.parse(cols.get(1).toString()).text() + "e uur " + docentOud + " wordt opgevangen door " + docentNieuw; } else { //Geen opvang door andere docent, lokaalwijziging oid wijzigingKaal = // Voegt alle kolommen samen tot 1 string // .text() zorgt voor leesbare text // Spaties voor leesbaarheid Jsoup.parse(cols.get(1).toString()).text() + "e uur " + Jsoup.parse(cols.get(2).toString()).text() + " " + Jsoup.parse(cols.get(3).toString()).text() + " wordt " + Jsoup.parse(cols.get(4).toString()).text() + " " + Jsoup.parse(cols.get(5).toString()).text() + " in " + Jsoup.parse(cols.get(6).toString()).text(); } //ipv en naar bevatten een "/" ivm uren (ma 12-04 / 4) String ipv = ""; if (Jsoup.parse(cols.get(7).toString()).text().contains("/")) { ipv = "ipv " + Jsoup.parse(cols.get(7).toString()).text(); } String naar = ""; if (Jsoup.parse(cols.get(8).toString()).text().contains("/")) { naar = "naar " + Jsoup.parse(cols.get(8).toString()).text() + " "; } String vervangingsTekst = ""; // staat in lege cell, encoding enz, zie volgende link: // http://stackoverflow.com/questions/26837034/how-to-tell-if-a-html-table-has-an-empty-cell-nbsp-using-jsoup //Soms veregeten ze de opmerkingen, dan krijg je size = 9 en error if (cols.size() > 9) { if (!Jsoup.parse(cols.get(9).toString()).text().equals("\u00a0")) { vervangingsTekst = "(" + Jsoup.parse(cols.get(9).toString()).text() + ")"; } } String wijziging = wijzigingKaal + " " + ipv + " " + naar + " " + vervangingsTekst; tempList.add(wijziging); } } //Geen wijzigingen pas bij laatste rij if (i == rows.size() - 1) { //Checken of tempList leeg is, zo ja 1 ding toevoegen if (tempList.isEmpty()) { tempList.add("Er zijn geen wijzigingen"); } //Dag waarvoor wijzigingen zijn ophalen Element dag = doc.select("body > div > div:nth-child(2) > p > b > span").first(); //Compatibiliteit met andere opmaak, om NPE te voorkomen if (dag == null) { dag = doc.select("body > center:nth-child(2) > div").first(); } String dagStr = dag.text().toLowerCase(); // Woorden staan verkeerd om: omwisselen int indexVanSpatie = dagStr.indexOf(" "); String datum = dagStr.substring(0, indexVanSpatie); String rest = dagStr.substring(indexVanSpatie + 1); String dagGoed = rest + " " + datum; tempList.add(dagGoed); //Stand ophalen: staat in 1e tabel van HTML Element tableDate = doc.select("table").get(0); String dateFullText = tableDate.getElementsContainingOwnText("Stand:").text(); //Deel achter "Stand:" pakken String FullTextSplit[] = dateFullText.split("Stand:"); tempList.add(FullTextSplit[1]); return tempList; } } } catch (java.io.IOException e) { //Error toevoegen aan tempList, dat wordt weergegeven in messagebox tempList.clear(); tempList.add("verbindFout"); return tempList; } //Zover hoort de method NOOIT te komen tempList.add("andereFout"); return tempList; }
From source file:com.rickendirk.rsgwijzigingen.ZoekService.java
private ArrayList<String> checkerClusters() { ArrayList<String> tempList = new ArrayList<>(); //String van klas halen uit SP String klasTextS = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()) .getString("pref_klas", ""); String url = "http://www.rsgtrompmeesters.nl/roosters/roosterwijzigingen/Lijsterbesstraat/subst_001.htm"; SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); //Clusters ophalen uit SP ArrayList<String> clusters = new ArrayList<>(); for (int a = 1; a < 15; a++) { //String initializen, anders kan hij hem niet toevoegen String clusterLowCase = ""; String cluster = sp.getString("pref_cluster" + a, ""); //If om nullpointer te voorkomen if (!cluster.equals("")) { clusterLowCase = cluster.substring(0, 1).toLowerCase() + cluster.substring(1); }//w w w . j ava 2 s .c om clusters.add(clusterLowCase); } //Lege clusters weghalen uit arraylist TODO: Kijken of singleton werkt/wat het is clusters.removeAll(Collections.singleton("")); //Er moeten wel clusters zijn ingevoerd: Zo nee, komt AlertDialog via onPostExecute if (clusters.isEmpty()) { tempList.add("geenClusters"); return tempList; } //Checken of klas niet leeg is if (klasTextS.equals("")) { tempList.add("geenKlas"); return tempList; } //Eerste teken klas mag geen letter zijn if (Character.isLetter(klasTextS.charAt(0))) { tempList.add("EersteTekenLetter"); return tempList; } //String opsplitsen in 2 delen, om naar hoofdletters te converteren char charcijfer = klasTextS.charAt(0); String klascijfer = String.valueOf(charcijfer); char charafdeling = klasTextS.charAt(1); String klasafdelingBig = String.valueOf(charafdeling).toUpperCase(); //Onderstaand voor hoofdlettercorrectie String klasCorrect; //KlasCorrect is klas na hoofdlettercorrectie switch (klasTextS.length()) { case 2: klasCorrect = klascijfer + klasafdelingBig; break; case 3: char klasabc = klasTextS.charAt(2); String klasabcSmall = String.valueOf(klasabc).toLowerCase(); klasCorrect = klascijfer + klasafdelingBig + klasabcSmall; break; case 4: char klasafdeling2 = klasTextS.charAt(2); String klasafdeling2Big = String.valueOf(klasafdeling2).toUpperCase(); klasabc = klasTextS.charAt(3); klasabcSmall = String.valueOf(klasabc).toLowerCase(); klasCorrect = klascijfer + klasafdelingBig + klasafdeling2Big + klasabcSmall; break; default: tempList.add("klasMeerDan4Tekens"); return tempList; } //Try en catch in het geval dat de internetverbinding mist try { Document doc = Jsoup.connect(url).get(); Elements tables = doc.select("table"); if (tables.size() < 1) { //Geen geschikte tabel aanwezig tempList.add("geenTabel"); return tempList; } Element table = tables.get(1); Elements rows = table.select("tr"); //Eerste loop is om 2e loop te herhalen voor iedere cluster, tweede loop //doorzoekt dan op zowel klas als cluster for (int b = 0; b < clusters.size(); b++) { for (int i = 2; i < rows.size(); i++) { Element row = rows.get(i); Elements cols = row.select("td"); if (cols.get(0).text().contains(klasCorrect) && cols.get(2).text().contains(clusters.get(b))) { String vakOud = Jsoup.parse(cols.get(2).toString()).text(); String docentOud = Jsoup.parse(cols.get(3).toString()).text(); String vakNieuw = Jsoup.parse(cols.get(4).toString()).text(); String docentNieuw = Jsoup.parse(cols.get(5).toString()).text(); //If in geval van uitval, else ingeval van wijziging if (Jsoup.parse(cols.get(6).toString()).text().contains("--")) { //2 opties: wordt verplaatst of valt uit if (Jsoup.parse(cols.get(8).toString()).text().contains("Uitval")) { String wijziging = Jsoup.parse(cols.get(1).toString()).text() + "e uur " + Jsoup.parse(cols.get(2).toString()).text() + " valt uit"; tempList.add(wijziging); } else { //Uur wordt verplaatst String wijziging = Jsoup.parse(cols.get(1).toString()).text() + "e uur " + "wordt verplaatst naar " + Jsoup.parse(cols.get(8).toString()).text(); tempList.add(wijziging); } } else if (vakOud.equals(vakNieuw) && docentOud.equals(docentNieuw)) { String wijziging = Jsoup.parse(cols.get(1).toString()).text() + "e uur " + vakOud + " wordt verplaatst naar " + Jsoup.parse(cols.get(6).toString()).text(); tempList.add(wijziging); } else { String wijzigingKaal = // Voegt alle kolommen samen tot 1 string // .text() zorgt voor leesbare text // Spaties voor leesbaarheid Jsoup.parse(cols.get(1).toString()).text() + "e uur " + Jsoup.parse(cols.get(2).toString()).text() + " " + Jsoup.parse(cols.get(3).toString()).text() + " wordt " + Jsoup.parse(cols.get(4).toString()).text() + " " + Jsoup.parse(cols.get(5).toString()).text() + " in " + Jsoup.parse(cols.get(6).toString()).text(); //ipv en naar bevatten een "/" ivm uren (ma 12-04 / 4) String ipv = ""; if (Jsoup.parse(cols.get(7).toString()).text().contains("/")) { ipv = "ipv " + Jsoup.parse(cols.get(7).toString()).text(); } String naar = ""; if (Jsoup.parse(cols.get(8).toString()).text().contains("/")) { naar = "naar " + Jsoup.parse(cols.get(8).toString()).text() + " "; } String vervangingsTekst = ""; // staat in lege cell, encoding enz, zie volgende link: // http://stackoverflow.com/questions/26837034/how-to-tell-if-a-html-table-has-an-empty-cell-nbsp-using-jsoup if (cols.size() > 9) { if (!Jsoup.parse(cols.get(9).toString()).text().equals("\u00a0")) { vervangingsTekst = "(" + Jsoup.parse(cols.get(9).toString()).text() + ")"; } } String wijziging = wijzigingKaal + " " + ipv + " " + naar + " " + vervangingsTekst; tempList.add(wijziging); } } //Geen wijzigingen pas bij laatste rij en de laatste cluster if (i == rows.size() - 1 && b == clusters.size() - 1) { //Checken of tempList leeg is, zo ja 1 ding toevoegen if (tempList.isEmpty()) { tempList.add("Er zijn geen wijzigingen"); } //Dag waarvoor wijzigingen zijn ophalen Element dag = doc.select("body > div > div:nth-child(2) > p > b > span").first(); //Compatibiliteit met andere opmaak, om NPE te voorkomen if (dag == null) { dag = doc.select("body > center:nth-child(2) > div").first(); } String dagStr = dag.text().toLowerCase(); // Woorden staan verkeerd om: omwisselen int indexVanSpatie = dagStr.indexOf(" "); String datum = dagStr.substring(0, indexVanSpatie); String rest = dagStr.substring(indexVanSpatie + 1); String dagGoed = rest + " " + datum; tempList.add(dagGoed); //Stand ophalen: staat in 1e tabel van HTML Element tableDate = doc.select("table").get(0); String dateFullText = tableDate.getElementsContainingOwnText("Stand:").text(); //Deel achter "Stand:" pakken String FullTextSplit[] = dateFullText.split("Stand:"); tempList.add(FullTextSplit[1]); return tempList; } } } } catch (java.io.IOException e) { //Error toevoegen aan tempList, dat wordt weergegeven in messagebox tempList.clear(); tempList.add("verbindFout"); return tempList; } //Zover hoort de method NOOIT te komen tempList.add("andereFout"); return tempList; }
From source file:github.popeen.dsub.fragments.SelectPodcastsFragment.java
private String getRssFeed(String url) { String url2 = url;/*ww w . j a va2s.co m*/ try { if (url.toLowerCase().contains("itunes.apple.com")) { Pattern pattern = Pattern.compile("/id([0-9]*)"); Matcher matcher = pattern.matcher(url); if (matcher.find()) { try { String raw = KakaduaUtil.http_get_contents( "https://itunes.apple.com/lookup?id=" + matcher.group(1) + "&entity=podcast"); url2 = new JSONObject(raw).getJSONArray("results").getJSONObject(0).getString("feedUrl"); Log.w("podcast", url2); } catch (Exception e) { Log.w("podcast", e.toString()); } } } else if (url.toLowerCase().contains("soundcloud.com")) { try { Document doc = Jsoup.connect(url).get(); Elements metas = doc.getElementsByTag("meta"); for (Element meta : metas) { if (meta.attr("property").equals("al:android:url")) { String id = meta.attr("content").replace("soundcloud://users:", ""); url2 = "https://feeds.soundcloud.com/users/soundcloud:users:" + id + "/sounds.rss"; Log.w("podcast", url2); } } } catch (Exception e) { Log.w("podcast", e.toString()); } } else if (url.toLowerCase().contains("player.fm/series")) { try { Document doc = Jsoup.connect(url).get(); Elements links = doc.select(".blatant"); for (Element link : links) { if (link.text().equals("Public Feed")) { url2 = link.attr("href"); Log.w("podcast", url2); } } } catch (Exception e) { Log.w("podcast", e.toString()); } } else if (url.toLowerCase().contains("acast.com") || url.toLowerCase().contains("podbean.com")) { /* TODO, This uses a standard tag that most podcasting websites support. Make it always try this if the url entered is not a valid feed or a website with a specific conversion above like for example iTunes. If it fails it needs to prevent the app from adding it to the server and then show an error message */ try { Document doc = Jsoup.connect(url).get(); Elements links = doc.select("link"); for (Element link : links) { if (link.attr("type").equals("application/rss+xml")) { url2 = link.attr("href"); Log.w("podcast", url2); } } } catch (Exception e) { Log.w("podcast", e.toString()); } } } catch (Exception e) { Log.w("podcast", e.toString()); } return url2; }
From source file:im.ene.lab.attiq.ui.activities.ItemDetailActivity.java
private void buildArticleMenu(@NonNull Article article) { String articleHtml = article.getRenderedBody(); Elements headers = Jsoup.parse(articleHtml).select("h0, h1, h2, h3, h4, h5, h6"); mMenuContainer.removeAllViews();//from w ww. j a v a 2s. co m final LayoutInflater inflater = LayoutInflater.from(mMenuContainer.getContext()); if (!UIUtil.isEmpty(headers)) { // 1. Find the top level (lowest level) Iterator<Element> items = headers.iterator(); int topLevel = WebUtil.getHeaderLevel(items.next().tagName()); while (items.hasNext()) { int level = WebUtil.getHeaderLevel(items.next().tagName()); if (topLevel > level) { topLevel = level; } } Log.e(TAG, "buildArticleMenu: " + topLevel); // 2. Build the menu for headers for (final Element item : headers) { View menuItemView = inflater.inflate(R.layout.item_detail_menu_row, mMenuContainer, false); CheckedTextView menuContent = (CheckedTextView) menuItemView.findViewById(R.id.header_content); menuContent.setText(item.text()); int currentLevel = WebUtil.getHeaderLevel(item.tagName()); if (currentLevel - topLevel > 0) { menuContent.setCompoundDrawablesWithIntrinsicBounds( new ThreadedCommentDrawable(mCommentThreadColor, mHeaderDepthWidth, mHeaderDepthGap, currentLevel - topLevel), null, null, null); } menuItemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { mMenuAnchor = item; mContentView.clearMatches(); mContentView.findAllAsync(item.text()); } }); mMenuContainer.addView(menuItemView); } mMenuLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED); mArticleHeaderMenu.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem item) { mMenuLayout.openDrawer(GravityCompat.END); return true; } }); } else { mMenuLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED); mArticleHeaderMenu.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem item) { if (!isFinishing() && mContentContainer != null) { Snackbar.make(mContentContainer, R.string.item_detail_no_menu, Snackbar.LENGTH_LONG).show(); } return true; } }); } }
From source file:net.meiolania.apps.habrahabr.fragments.companies.loader.CompaniesLoader.java
@Override public ArrayList<CompaniesData> loadInBackground() { ArrayList<CompaniesData> data = new ArrayList<CompaniesData>(); try {/*w w w. j a v a 2s . c o m*/ String readyUrl = String.format(URL, page); Log.i(TAG, "Loading a page: " + readyUrl); Document document = Jsoup.connect(readyUrl).get(); Elements companies = document.select("div.company"); for (Element company : companies) { CompaniesData companiesData = new CompaniesData(); Element icon = company.select("div.icon > img").first(); Element index = company.select("div.habraindex").first(); Element title = company.select("div.description > div.name > a").first(); Element description = company.select("div.description > p").first(); companiesData.setTitle(title.text()); companiesData.setUrl(title.attr("abs:href")); // TODO: rewrite the code below companiesData.setIcon("http://habrahabr.ru" + icon.attr("src")); companiesData.setIndex(index.text()); companiesData.setDescription(description.text()); data.add(companiesData); } } catch (IOException e) { } return data; }
From source file:net.meiolania.apps.habrahabr.fragments.events.loader.EventLoader.java
@Override public ArrayList<EventsData> loadInBackground() { ArrayList<EventsData> data = new ArrayList<EventsData>(); try {//from w w w . ja va2 s .com String readyUrl = url.replace("%page%", String.valueOf(page)); Log.i(TAG, "Loading a page: " + readyUrl); Document document = Jsoup.connect(readyUrl).get(); Elements events = document.select("div.event"); for (Element event : events) { EventsData eventsData = new EventsData(); Element title = event.select("h1.title > a").first(); //Element detail = event.select("div.detail").first(); Element text = event.select("div.text").first(); Element month = event.select("div.date > div.month").first(); Element day = event.select("div.date > div.day").first(); Element hubs = event.select("div.hubs").first(); eventsData.setTitle(title.text()); eventsData.setUrl(title.attr("abs:href")); //eventsData.setDetail(detail.text()); eventsData.setText(text.text()); eventsData.setDate(day.text() + " " + month.text()); eventsData.setHubs(hubs.text()); data.add(eventsData); } } catch (IOException e) { } return data; }
From source file:net.meiolania.apps.habrahabr.fragments.events.loader.EventShowLoader.java
@Override public EventFullData loadInBackground() { EventFullData event = new EventFullData(); try {/*w ww .j a va 2 s.c o m*/ Document document = Jsoup.connect(url).get(); Element day = document.select("div.date > div.day").first(); Element month = document.select("div.date > div.month").first(); // TODO: add logo Element logo = document.select("div.logo > img").first(); Element title = document.select("div.info_block > h1.title").first(); Element detail = document.select("div.info_block > div.detail").first(); Element description = document.select("div.info_block > div.description").first(); Elements additionalInfo = document.select("div.info_block").first().getElementsByTag("dd"); Element location = null, pay = null, site = null; // TODO: need to test this code more int i = 0; for (Element info : additionalInfo) { switch (i) { case INFO_LOCATION: location = info; break; case INFO_PAY: pay = info; break; case INFO_SITE: site = info; break; } i++; } event.setTitle(title.text()); event.setUrl(url); event.setDate(day.text() + " " + month.text()); // eventsFullData.setLogo(logo.attr("src")); event.setDetail(detail.text()); event.setText(description.text()); event.setPay(pay.text()); event.setLocation(location.text()); event.setSite(site.text()); } catch (IOException e) { } return event; }
From source file:net.meiolania.apps.habrahabr.fragments.hubs.loader.HubsLoader.java
@Override public ArrayList<HubsData> loadInBackground() { ArrayList<HubsData> data = new ArrayList<HubsData>(); try {//from w w w . j ava2s . co m String readyUrl = url.replace("%page%", String.valueOf(page)); Log.i(TAG, "Loading a page: " + readyUrl); Document document = Jsoup.connect(readyUrl).get(); Elements hubs = document.select("div.hub"); for (Element hub : hubs) { HubsData hubsData = new HubsData(); Element index = hub.select("div.habraindex").first(); Element title = hub.select("div.title > a").first(); Element stat = hub.select("div.stat").first(); hubsData.setTitle(title.text()); hubsData.setUrl(title.attr("abs:href")); hubsData.setStat(stat.text()); hubsData.setIndex(index.text()); data.add(hubsData); } } catch (IOException e) { } return data; }
From source file:net.meiolania.apps.habrahabr.fragments.posts.loader.PostCommentsLoader.java
private void parseComments(Elements comments, int level) { for (Element comment : comments) { CommentsData commentsData = new CommentsData(); /*//from w ww . jav a 2s . c o m * TODO: Really awful. Need to rewrite this. */ String commentId = comment.attr("id"); if (containedComments.contains(commentId)) continue; containedComments.add(commentId); Element name = comment.select("a.username").first(); Element message = comment.select("div.message").first(); Element linkToComment = comment.select("a.link_to_comment").first(); Element score = comment.select("span.score").first(); commentsData.setScore(score.text()); commentsData.setUrl(linkToComment.attr("abs:href")); commentsData.setAuthorUrl(name.attr("abs:href")); commentsData.setAuthor(name.text()); commentsData.setComment(message.text()); commentsData.setLevel(level); commentsDatas.add(commentsData); Elements replyComments = comment.select("div.reply_comments > div.comment_item"); parseComments(replyComments, level + 1); } }