Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Java > Общие вопросы по Java, Java SE, Kotlin
Регистрация

Восстановить пароль
Повторная активизация e-mail

Ответ
 
Опции темы
Старый 12.04.2018, 19:43   #1
Solenoid2200
 
Регистрация: 04.02.2018
Сообщений: 4
Репутация: 10
По умолчанию Как в Java вычитать HTML код страницы с нужным параметром в теге select ?

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

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

Код:

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();

    }

}

Solenoid2200 вне форума   Ответить с цитированием
Старый 12.04.2018, 20:05   #2
Alex11223
Модератор
Заслуженный модератор
 
Регистрация: 12.01.2011
Сообщений: 15,784
Репутация: 3110

icq: 512-765
skype: alexp.frl
По умолчанию

Ну так сделайте нужные HTTP запросы.

И не парсите так HTML, возьмите библиотеку для парсинга HTML.

Но у подобного обычно есть API. Хотя он вроде платный тут https://www.globalpetrolprices.com/api/index.php
Alex11223 вне форума   Ответить с цитированием
Старый 12.04.2018, 20:16   #3
Solenoid2200
 
Регистрация: 04.02.2018
Сообщений: 4
Репутация: 10
По умолчанию

Платный АПИ видел, но надо бесплатный вариант.
Есть вариант с парсингом с помощью Йсоуп, но там таже проблема. А в таком виде код привел для примера, чтобы без импорта внешних библиотек и любой мог скопировать и сразу запустить.

Что за нужные HTTP запросы? Подскажите плиз.
Solenoid2200 вне форума   Ответить с цитированием
Старый 12.04.2018, 20:29   #4
Alex11223
Модератор
Заслуженный модератор
 
Регистрация: 12.01.2011
Сообщений: 15,784
Репутация: 3110

icq: 512-765
skype: alexp.frl
По умолчанию

Библиотеки обычно с помощью Maven или Gradle устанавливают (как и собирают им проект, запускают тесты и т.п.)
Цитата:
Сообщение от Solenoid2200 Посмотреть сообщение
Что за нужные HTTP запросы?
В результате которых сайт отдает нужный вам контент.
Alex11223 вне форума   Ответить с цитированием
Старый 13.04.2018, 18:19   #5
Solenoid2200
 
Регистрация: 04.02.2018
Сообщений: 4
Репутация: 10
По умолчанию

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

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

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Парсинг html страницы Java mashakrauchanka Помощь студентам 0 01.12.2016 15:31
Вывести HTML код страницы (включая код фрэйм страницы) Lorden PHP 0 04.09.2014 18:21
Как отобразить в Html код страницы? JGalt JavaScript, Ajax 4 29.07.2013 19:25
Код(скрипт) чтения HTML страницы как текста PuzzleC JavaScript, Ajax 3 06.03.2010 16:35


03:05.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru