Версия для печати
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум на Исходниках.RU > Java > Как в Java вычитать HTML код страницы с нужным параметром в теге select ?


Автор: Solenoid 12.04.18, 15:33
Пример:
Вычитать HTML-код страницы
https://www.globalpetrolprices.com/gasoline_prices/
для цены в EUR

При открытии сайта по умолчанию цена задана в U.S. Dollar и парсится без проблем:
А как быть для цены в EUR?

<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
    import java.io.BufferedReader;
    import java.io.InputStreamReader;
    import java.net.URL;
    import java.net.URLConnection;
    import java.util.ArrayList;
    import java.util.List;
     
    public class FuelPreisService {
     
        public static void main(String[] args) throws Exception {
     
            String siteAddress = "https://www.globalpetrolprices.com/gasoline_prices/?literGalon=1&currency=EUR";
            String httpContent = getContentOfHTTPPage(siteAddress);
            List<String> preisFuel = getPreisFuel(httpContent);
            System.out.println(preisFuel);
     
        }
     
     
        private static List<String> getPreisFuel(String httpContent) throws Exception {
     
            List<String> result = new ArrayList<String>();
     
            String[] array1 = httpContent.split("data=");
            String st1 = array1[1];
     
            String[] array2 = st1.split("&titles");
            String prices = array2[0];
     
            String[] array3 = prices.split(",");
            for (int i = 0; i < array3.length; i++) {
            result.add((array3[i]));
            }
     
            return result;
     
        }
     
     
        private static String getContentOfHTTPPage(String pageAddress) throws Exception {
     
            StringBuilder sb = new StringBuilder();
            URL pageURL = new URL(pageAddress);
            URLConnection uc = pageURL.openConnection();
            BufferedReader br = new BufferedReader(new InputStreamReader(uc.getInputStream()));
            try {
                String inputLine;
                while ((inputLine = br.readLine()) != null) {
                    sb.append(inputLine);
                }
            } finally {
                br.close();
            }
     
            return sb.toString();
     
        }
     
    }

Автор: Solenoid 13.04.18, 14:18
В общем алгоритм действий представляется примерно таким:

1. Открыть соединение HttpURLConnection
2. Записать параметры в соединение после того, как соединение открыто
3. Получить Moved Temporarily на нужную страницу
4. Получить куку из заголовка
5. Отправить запрос с кукой на новую страницу

Это единственно возможный способ или всё таки можно как-то сразу первым же запросом с параметрами получить требуемые данные?

Powered by Invision Power Board (https://www.invisionboard.com)
© Invision Power Services (https://www.invisionpower.com)