powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Помогите советом по парсингу странички
16 сообщений из 16, страница 1 из 1
Помогите советом по парсингу странички
    #39185648
wolfio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте.

от HTML я человек далекий. Изучаю Java, и решил в качестве эксперимента написать программку, которая парсит программу ТВ передач на сегодня и пишет их в файлик.
Взял за источник Яндексовый сервис: https://tv.yandex.ru/213?grid=main&period=all-day

Подключиться смог, а дальше просто колом встал. у еня был минимальный запас знаний по HTML, но тут столько Тегов, что я концов не нахожу..
И так, я хочу (для примера) понять, какой тег/атрибут/значение (кстати, какая разница между 2мя последними?) мне нужно запросить у парсера, чтобы вытянуть заголовок канала "Первый", и далее все его передачи (в цикле, видимо)?

т.е. у меня нет понимания того, как заголовок (имя канала) связано с его содержимым (колонкой под ним). и по имени какого атрибута я могу запросить у парсера значение наименования канала

я очень далек от этих тонкостей, поэтому буду рад очень пережеванному объяснению.
...
Рейтинг: 0 / 0
Помогите советом по парсингу странички
    #39185762
Лебедкин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще для парсинга страничек применяются 2 подхода: регулярными выражениями и используя dom модель. для второго пути в php применяется SimpleXML, в python - lxml & grab, в java не знаю, не сталкивался, но разумеется есть и другие библиотеки.
Чтобы дать более детальные советы надо глубже впираться в задачу -- это долго извини.
Но я посоветовал бы для учебного эксперимента взять что-нибудь попроще структурой, чем код страниц сделанных программистами яндекса.
...
Рейтинг: 0 / 0
Помогите советом по парсингу странички
    #39185769
wolfio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Лебедкин,

мой вопрос не в том, как распарсить - я написал, что распарсил ее.
вопрос в том, какой атрибут/значение/ключ запросить у парсера, чтобы получить в результате значение, заключенное в теге ("Первый", например)?
...
Рейтинг: 0 / 0
Помогите советом по парсингу странички
    #39185782
Лебедкин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чтобы ответить на этот вопрос надо код видеть.
ищешь по тексту слово "Первый" и смотришь где, в каких тегах, оно находится.
...
Рейтинг: 0 / 0
Помогите советом по парсингу странички
    #39185790
wolfio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Лебедкин,

это кусок из середины
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
             <div class="tv-channel-title__icon">
                <span class="b-tv-image b-tv-image_type_channel"><span class="b-tv-image__picture image" style="width:38px;height:30px;background-image:url(//avatars.mds.yandex.net/get-tv-shows/70764/2a0000015185958133fa8320d7801efb782f/orig)"></span></span>
               </div><span class="tv-channel-title__text">Первый</span></a>
              <div class="tv-channel-title__buttons">
               <div class="tv-channel-title__button">
                <button class="button button_theme_clear button_only-icon_yes button_focus_no button_size_s button_border_no button_tooltip_yes button_broadcasting_yes button_location_grid i-bem" data-bem="{&quot;button&quot;:{&quot;channelId&quot;:146}}" role="button" type="button"><span class="button__text">
                  <div class="button__ico">
                   <i class="icon icon_broadcasting_grid"></i>
                  </div></span></button>
...
Рейтинг: 0 / 0
Помогите советом по парсингу странички
    #39185811
Лебедкин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
у парсера есть возможность элемент по классу запросить? ну и запрашивай нужный класс: tv-channel-title__text.
но вообще, на мой взгляд такие вещи легче регулярными выражениями парсить.
...
Рейтинг: 0 / 0
Помогите советом по парсингу странички
    #39185821
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Судя по тому, что теги типа этого

<link rel="apple-touch-icon" sizes="180x180" href="/favicon/apple-touch-icon-180x180.png"/>

закрыты слешом, код страницы xml-валидный, а потому всю инфу можно вытянуть с помощью xsl.
...
Рейтинг: 0 / 0
Помогите советом по парсингу странички
    #39185823
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wolfioмой вопрос не в том, как распарсить - я написал, что распарсил ее.
Как и чем распарсил?
...
Рейтинг: 0 / 0
Помогите советом по парсингу странички
    #39185844
wolfio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ЕвгенийВ,

JSoup
...
Рейтинг: 0 / 0
Помогите советом по парсингу странички
    #39185889
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wolfioу еня был минимальный запас знаний по HTML, но тут столько Тегов, что я концов не нахожу..
найди тэги <a> с классом tv-event и посмотри на значение атрибута data-bem - в нём json-строка с информацией о событии

немножко поосвоишься с селекторами - телеканалы выделишь.

ЗЫ здесь с javascript работают, JSOUP - это Java, в соседнем форуме вопросы задавай - http://www.sql.ru/forum/java
...
Рейтинг: 0 / 0
Помогите советом по парсингу странички
    #39186163
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wolfioJSoup
Можно где-то так :

Код: java
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.
import java.io.IOException;
import java.io.StringReader;

import javax.json.Json;
import javax.json.JsonObject;
import javax.json.JsonReader;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

public class App 
{
    public static void main( String[] args ) throws IOException
    {
        System.out.println( "Программа передач: " );
        String url="https://tv.yandex.ru/213?grid=main&period=all-day";
        Document doc = Jsoup.connect(url).get();
        Elements tvchannels  = doc.select("div.tv-channel");
        for(Element chan:tvchannels){
        	String channelName = chan.select("span.tv-channel-title__text").get(0).text();
        	System.out.println( channelName );
            Elements links = chan.select("a.tv-event");        
            for(Element item:links){
            	String jsonText=item.attr("data-bem");
            	JsonReader jsonReader = Json.createReader(new StringReader(jsonText));
            	JsonObject jobj = jsonReader.readObject();
            	jsonReader.close();
            	String genre = 	jobj.getJsonObject("tv-event").getString("genre");
            	String itemTime=item.select("span.tv-event__time-text").get(0).text();
            	String itemText=item.select("div.tv-event__title-inner").get(0).text();
            	System.out.println( "\t"+itemTime+" " + itemText +" (" +genre+ ")");
            }
        }
    }
}
...
Рейтинг: 0 / 0
Помогите советом по парсингу странички
    #39188453
wolfio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Изопропил,

уважаемый хим.элемент (не допускаем тавтологию) , ты просто царь. мой респект от души.
Благодарю за отличный наглядный пример, благодаря которому я понял как обращаться к HTML тегам. Увековечу ссылку на эту тему в своей микробиблиотеке))
...
Рейтинг: 0 / 0
Помогите советом по парсингу странички
    #39188473
wolfio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Изопропил,

а ты не мог бы разъяснить, для большей понятности, зачем нужны эти три строки?

Код: java
1.
2.
3.
4.
JsonReader jsonReader = Json.createReader(new StringReader(jsonText));
            	JsonObject jobj = jsonReader.readObject();
            	jsonReader.close();
            	String genre = 	jobj.getJsonObject("tv-event").getString("genre");



почему сразу нельзя прочитать div.tv-event__title-inner? я попробовал, но результат в тексте просто "div"..

я понимаю, что это скорее всего особенности html, но хотелось бы все в деталях понять
...
Рейтинг: 0 / 0
Помогите советом по парсингу странички
    #39188507
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wolfio,

просто мне сначала показалось, что в json вся информация о передаче.

а потом оставил для полноты примера ( не только html разбор, но и чтение попутного json), рано или поздно может пригодиться.
(всё из опыта разборок со спецификациями на сайтах производителей, там ещё требовался crawler4j для обхода сайта)
...
Рейтинг: 0 / 0
Помогите советом по парсингу странички
    #39188750
wolfio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Изопропил,
спасибо :)
последнее предложение не понял вообще))) надеюсь, придет с опытом))

спасибо еще раз!
...
Рейтинг: 0 / 0
Помогите советом по парсингу странички
    #39191359
wolfio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день:)

возвращаюсь к этой же теме))
хочу выгружать теперь всю ту же тв-программу, но адрес немножко изменился https://tv.yandex.ru/213?grid=all&period=all-day - это там где ВСЕ каналы.

Сложность для меня в том, что страница эта данные обо всех каналах сразу не дает. Если смотреть в браузере, надо докрутить страничку донизу, затем страничка догружает данные, и так 10 раз, пока не прогрузится целиком.

Пожалуйста подскажите, как называется этот элемент на странице, чтобы понять какие примеры по его вычитыванию мне искать.

Спасибо.
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Помогите советом по парсингу странички
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]