Как с помощью Java получить информацию из страницы
Как с помощью Java получить информацию с этой страницы http://www.oddsportal.com/soccer/spain/primera-division/rayo-vallecano-valencia-d4LVsDnC/ и других подобных страниц, реализующих Javascript,Ajax? Спасибо!
Отслеживать
задан 29 апр 2015 в 20:59
11 1 1 золотой знак 1 1 серебряный знак 1 1 бронзовый знак
Постарайтесь писать более развернутые вопросы. Поясните, что именно у вас вызывает затруднение и что вы уже реализовали?
30 апр 2015 в 7:56
Как это будет применяться? Однократно или на постоянной основе?
30 апр 2015 в 8:02
Я могу скачать страницу и отпарсить ее, если это обычный html без использования javascript,ajax. Но если это динамическая страница, то возникают трудности. В примере с этой ссылкой мне нужно скачать и отпарсить таблицу с коэффициентами, но я не могу сделать это с помощью например класса URL, так как эти коэффициенты в явном виде отсутствуют на странице. И да это будет применяться на постоянной основе. Спасибо за ответы!
Как в Java вычитать HTML код страницы с нужным параметром в теге select ?
При открытии сайта по умолчанию цена задана в U.S. Dollar и парсится без проблем:
А как быть для цены в EUR?
Это вообще возможно?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
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¤cy=EUR"; String httpContent = getContentOfHTTPPage(siteAddress); ListString> preisFuel = getPreisFuel(httpContent); System.out.println(preisFuel); } private static ListString> getPreisFuel(String httpContent) throws Exception { ListString> result = new ArrayListString>(); 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(); } }
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:
Html код страницы в java
Есть страница у сайта site.ru/page/ . Нужно эту страницу внедрить в java файл (типа как инклуд у.
Как писать функцию, реагирующую на событие изменения выбора в теге select?
Как писать функцию, реагирующую на событие изменения выбора в теге select?
Как сохранить HTML-код страницы?
Есть 200 ссылок в .txt, нужно сохранить все html страниц. Как сохранить html страницу целеком или.
Как получить html-код страницы?
как получить html-код страницы методами js и потом его использовать в личных целях
Как в Java получить в фоновом режиме HTML-код страницы?
Такой вопрос: как мне получить в фоновом режиме HTML-код страницы при помощи Java? Чтобы вот я в строку вводил URL страницы сайта, нажимал ОК, и он сам мне выдавал HTML код. Никакие скрипты сайтовские не интересуют. Просто нужен вытащенный аштиэмэловский код.
Помогите, пожалуйста. Какие методы Java этому могут поспособствовать? Совсем зеленый в этом всём.
- Вопрос задан более трёх лет назад
- 890 просмотров
Комментировать
Решения вопроса 0
Ответы на вопрос 2
нельзя просто так взять и загуглить ошибку
Наверно всё-таки javascript?
Прямо через него браузер не отдаст html из-за CORS.
Поэтому только с помощью бекенда или костылить https://stackoverflow.com/a/18447625, не уверен что это срабоатет.
Ответ написан более трёх лет назад

ShabaevMB @ShabaevMB Автор вопроса
private static String getUrlSource(String url) throws IOException
Вот это сработало. На Java. Со стэковерфлоу англоязычного взято.

Постоянно использую вот этот (кривой, руки не доходят отшлифовать) код:
public static String readPageFromUrl(String strURL) throws IOException, InterruptedException < URL pURL = new URL(strURL); URLConnection urlCon = (HttpURLConnection) pURL.openConnection(); urlCon.setConnectTimeout(30000000); urlCon.setReadTimeout(30000000); urlCon.setRequestProperty("User-Agent", "Mozilla"); BufferedReader in = new BufferedReader(new InputStreamReader(urlCon.getInputStream())); StringBuilder result = new StringBuilder(); String readLine; readLine = in.readLine(); while (readLine != null) < result.append(readLine); readLine = in.readLine(); >in.close(); return result.toString(); >
Нюансы — не работает с charSet-ом, т.е. текст на некоторых сайтах будет в неправильной кодировке.
Решается заменой
in = new BufferedReader(new InputStreamReader(urlCon.getInputStream(), charset));
in = new BufferedReader(new InputStreamReader(urlCon.getInputStream(), ""));
И на некоторых сайтах стоит защита, конечно. Решается подстановкой правильного user agent, и других параметров. Я, для простоты, в таких случаях делаю вызов к wget из java.
Как в Java вычитать HTML код страницы с нужным параметром в теге select ?
При открытии сайта по умолчанию цена задана в 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¤cy=EUR"; String httpContent = getContentOfHTTPPage(siteAddress); ListpreisFuel = getPreisFuel(httpContent); System.out.println(preisFuel); > private static List getPreisFuel(String httpContent) throws Exception < Listresult = new ArrayList(); 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
В общем алгоритм действий представляется примерно таким:
1. Открыть соединение HttpURLConnection
2. Записать параметры в соединение после того, как соединение открыто
3. Получить Moved Temporarily на нужную страницу
4. Получить куку из заголовка
5. Отправить запрос с кукой на новую страницу
Это единственно возможный способ или всё таки можно как-то сразу первым же запросом с параметрами получить требуемые данные?
Мы в соцсетях:
Обучение наступательной кибербезопасности в игровой форме. Начать игру!
Поделиться:
XenPorta 2 PRO © Jason Axelrod of 8WAYRUN
На данном сайте используются cookie-файлы, чтобы персонализировать контент и сохранить Ваш вход в систему, если Вы зарегистрируетесь.
Продолжая использовать этот сайт, Вы соглашаетесь на использование наших cookie-файлов.
