private ArrayList<City> getCitys() { ArrayList<City> result = new ArrayList<>(); ArrayList<String> urlsPages = getPagesUrls(); if (urlsPages == null) { return null; } for (String urlPage : urlsPages) { InternetConnection connection = null; String page = null; try { connection = new InternetConnection(urlPage); page = connection.getPageFromGzip(); } catch (IOException e) { return null; } finally { if (connection != null) { connection.disconnect(); } } Matcher matcher = Pattern.compile( "<a data-toggle=\"tooltip\" title=\"[^\"]*\" href=\"[^\"]+\"><span class=\"text\">[^<]+</span>") .matcher(page); while (matcher.find()) { String region = ""; String name = ""; String url = ""; String findedString = matcher.group(); Matcher matcherRegion = Pattern.compile("title=\"[^\"]*").matcher(findedString); if (matcherRegion.find()) { region = matcherRegion.group().substring(7); } Matcher matcherName = Pattern.compile("text\">[^<]+").matcher(findedString); if (matcherName.find()) { name = matcherName.group().substring(6); } Matcher matcherUrl = Pattern.compile("href=\"[^\"]+").matcher(findedString); if (matcherUrl.find()) { url = matcherUrl.group().substring(6); } City city = new City(region, name, url); if (!result.contains(city)) { result.add(city); } } } return result; }
private ArrayList<Shop> getShops() { ArrayList<Shop> result = new ArrayList<>(); InternetConnection connection = null; String pageInString = null; try { connection = new InternetConnection(SD.BASE_URL + category.getUrl()); pageInString = connection.getPageFromGzip(); } catch (IOException e) { return null; } finally { if (connection != null) { connection.disconnect(); } } Matcher matcherShop = Pattern.compile( "<a data-placement=\"left\" data-toggle=\"tooltip\" title=\"[^\"]*\" href=\"[^\"]*\"> <span class=\"img\"><img src=\"[^\"]*\" alt=\"\" /></span> <span class=\"text\">[^<]*</span>") .matcher(pageInString); while (matcherShop.find()) { String url = ""; String name = ""; String image = ""; String foundedString = matcherShop.group(); if (!foundedString.contains(category.getName())) { continue; } Matcher matcherUrl = Pattern.compile("href=\"[^\"]+").matcher(foundedString); if (matcherUrl.find()) { url = matcherUrl.group().substring(6); } Matcher matcherName = Pattern.compile("<span class=\"text\">[^<]*").matcher(foundedString); if (matcherName.find()) { name = matcherName.group().substring(19); } Matcher matcherImage = Pattern.compile("src=\"[^\"]+").matcher(foundedString); if (matcherImage.find()) { image = matcherImage.group().substring(5).replaceFirst("\\-[0-9]+\\.", "."); } Shop shop = new Shop(name, image, city, category.getUrl(), url, "false"); if (!result.contains(shop)) { result.add(shop); } } return result; }
private ArrayList<String> getPagesUrls() { ArrayList<String> result = new ArrayList<>(); InternetConnection connection = null; String page = null; try { connection = new InternetConnection(SD.URL_CITYS); page = connection.getPageFromGzip(); } catch (IOException e) { return null; } finally { if (connection != null) { connection.disconnect(); } } if (page != null && !page.isEmpty()) { Matcher matcherUrls = Pattern.compile("cities/\\?a=[^\"]+").matcher(page); while (matcherUrls.find()) { String findedString = matcherUrls.group(); result.add(SD.BASE_URL + findedString); } } return result; }