Как парсить контент, подгружаемый скриптами

Тема в разделе "Решение различных задач по парсингу", создана пользователем One_is_All, 21 дек 2018.

  1. One_is_All

    One_is_All Member Пользователи

    Регистрация:
    20 дек 2018
    Сообщения:
    14
    Подгруздка контента происходит, только после загрузки скрипта.
    Когда пробую загрузить главную страницу, то выводится:
    Скрытое содержимое:
    **Скрытое содержимое: доступно при наличии 1 постов.**
    Хорошо, поступил умнее, вытащил через http заголовок путь, который отображает контент:
    Скрытое содержимое:
    **Скрытое содержимое: доступно при наличии 1 постов.**
    К счастью, облегчило сбор ссылок, без мусора)

    1) но подскажите пожалуйста, как автоматизировать, загрузку всех страниц, не нажимая до полного отображения [Показать еще Н кол-во страниц из Н кол-во], то есть, я руками постоянно нажимаю, на кнопку, чтобы загрузить все скрытые блоки, чтоб потом скопировать все ссылки на странице.
    2) После того, как я собрал все ссылки, получается что перейдя по ссылке на товар, там есть "позиция по объему", которую мне нужно спарсить, но парсер не может пройти дальше, чтобы вытащить мне кусок, так как контент загружается после скрипта.

    Как быть в этом случае?
     
  2. Root

    Root Администратор Администратор

    Регистрация:
    10 мар 2010
    Сообщения:
    14.818
    Город:
    Барнаул
    Ссылки недоступны для гостей (сейчас лучше использовать встроенный инструмент Firefox для мониторинга сети shift+ctrl+e).
     
  3. Root

    Root Администратор Администратор

    Регистрация:
    10 мар 2010
    Сообщения:
    14.818
    Город:
    Барнаул
    Посмотрел запросы отправляемые этим сайтом.

    На этом сайте для подгрузки данных по объему нужно пользоваться имитацией кликов в Ссылки недоступны для гостей
     
    One_is_All нравится это.
  4. One_is_All

    One_is_All Member Пользователи

    Регистрация:
    20 дек 2018
    Сообщения:
    14
    Именно, его и начал изучать "WBApp", понемногу начинаю разбираться с софтом в целом, огромное количество функций, гибкие возможности. Особенно с "WBApp". Были проблемы с парсингом через функцию [ALTERNATE], возможно из-за большого размера данных, но нашел другую функцию [поиск и замена], что оказалась еще удобнее.

    Очень доволен софтом, Вашей оперативной поддержкой! Попробую самостоятельно добить этот оставшийся вопрос и опубликовать готовое решение.
     
    Последнее редактирование: 22 дек 2018
    Root нравится это.
  5. One_is_All

    One_is_All Member Пользователи

    Регистрация:
    20 дек 2018
    Сообщения:
    14
    Не все конечно так просто, но попробую более детально описать, в чем трудность.

    1) Открыл станицу через WBApp, читается код html, вместо неразборчивого кода [hide №1]
    2) На страницах "карточка товара", разный объем, где 30, 50, 80, 90мл и т.д. есть и картинка + у всего одинаковый код, нет за что, зацепиться, если только не сам [объем мл].
    Скрытое содержимое:
    **Скрытое содержимое: доступно при наличии 1 постов.**
    3) Одинаковый html код цены в каждой позиции.
    Скрытое содержимое:
    **Скрытое содержимое: доступно при наличии 1 постов.**
    4) И вот тут то и выручает WBApp, через offsetleft, offsetwidth, offsetheheight
    Скрытое содержимое:
    **Скрытое содержимое: доступно при наличии 5 постов.**
    Подскажите, вот выбрал позицию 40мл, кликнул, она стала активной, появились цены, выбрал "полную цену" или "со скидкой", вопрос: Возможноли, копировать эти данные, чтобы вывести в content downloader? Так же не увидел изменения в смете активности позиции, при запуске не переключалась.

    Вообще, конечно за раз можно столько не делать телодвижений на странице, да и получится как (название; объем №1 = цена old, цена sale; объем №2 = цена old, цена sale; объем №3 = цена old, цена sale), думаю проще было бы 1 страницу 3 раза обрабатывать, чтобы в CSV была табличная структура:

    название; объем №1 = цена old, цена sale;
    название; объем №2 = цена old, цена sale;
    название; объем №3 = цена old, цена sale;

    Если быть честным, поковырявшись в кишках этого сайта, уже не знаю, возможности ли с него собрать куски :(
     
    Последнее редактирование: 23 дек 2018
  6. Root

    Root Администратор Администратор

    Регистрация:
    10 мар 2010
    Сообщения:
    14.818
    Город:
    Барнаул
    Целая научная диссертация.

    Как я понял, вот вопрос:
    Используйте событие [GEHTML]
    2018-12-23_03-35-59.png
     
    One_is_All и kagorec нравится это.
  7. One_is_All

    One_is_All Member Пользователи

    Регистрация:
    20 дек 2018
    Сообщения:
    14
    Не смог разобраться с [GETHTML], но Получается что, когда настраиванию WBAPP, а в Content_Downloader делаю вывод обыч. гр. парс: 1-4, то результат одного элемента выводится, но мне нужно делать 3 клика (3 элемента, которые выводятся после клика на одной странице), а между ними делать парсинг областей, которые отобразились после каждого клика на вкладку.

    Настройка в Content_Downloader
    Скрытое содержимое:
    **Скрытое содержимое: доступно при наличии 1 постов.**
    Настройка в WBAPP
    Скрытое содержимое:
    **Скрытое содержимое: доступно при наличии 1 постов.**

    // если так, то она выдает данные с 1 вкладки

    Как правильно понимаю. Чтобы вынимать данные с каждым кликом из одного документа, нужно 3 раза проделать настройку WBAPP?

    Скрытое содержимое:
    **Скрытое содержимое: доступно при наличии 1 постов.**
    но настройка в Content_Downloader, присылает пустые результаты
    Скрытое содержимое:
    **Скрытое содержимое: доступно при наличии 1 постов.**
    Скрытое содержимое:
    **Скрытое содержимое: доступно при наличии 1 постов.**
     
    Последнее редактирование: 29 дек 2018
  8. Root

    Root Администратор Администратор

    Регистрация:
    10 мар 2010
    Сообщения:
    14.818
    Город:
    Барнаул
    Меня расстраивает, что люди по описанию не могут понять, как работает [GETHTML].

    В момент срабатывания [GETHTML] в результат работы WBApp попадает текущий (на момент срабатывания) код WEB-документа.

    Если в одном проекте WBApp, например, в цикле, несколько раз сработает [GETHTML], то в результате работы WBApp будет содержаться сумма кодов WEB-документа (в разные моменты времени, в моменты срабатывания [GETHTML]).
     
    Последнее редактирование: 29 дек 2018
  9. One_is_All

    One_is_All Member Пользователи

    Регистрация:
    20 дек 2018
    Сообщения:
    14
    Интересно тем, что 3 варианта, которые нужно учитывать 1) есть кнопки для переключения вкладок (где отображаются цены), 2) есть картинка (заместо кнопки), 3) нет вообще переключателя (а только цена). Поиск/Замена, понятно. Далее настройка если клик состоялся, то.. если нет, то..

    [GETHTML] - без :настройки{get}|выдает весь текущий веб-документ{get}, с которым потом можно работать для определенных или динамич. частичных областей?
    [CLICK][classname][N]0[/N][FULL]:product-main-info-volume__list-item active
    [GETHTML]
    [CDDATA:1]>h1<[/CDDATA][CDDATA:2]<h2>[GETHTML]:<!--ko text:volumeUnit-->{get}<!--/ko-->|{get}[/CDDATA][CDDATA:3]>price<[/CDDATA][CDDATA:4]
    >sale<[/CDDATA]
    [GETHTML]
    [WAIT]:200
    [/IFNOTCLICKED][INT1]

    и если ок (прошел), то нужно проделать это еще 1 раз или вернуться для обработки следующей кнопки.

    чтоб на вид воспринималась, За место, стоит:
    >h1< - GRAN_1!
    >h2< - GRAN_2!
    >price< - GRAN_3!
    >sale< - GRAN_4!
    [GETHTML]:<!--ko text:volumeUnit-->{get}<!--/ko-->|{get} - точный мегапиксель страницы из (2-5 символов).
     
    Последнее редактирование: 1 янв 2019
  10. sitedn

    sitedn New Member Пользователи

    Регистрация:
    13 окт 2015
    Сообщения:
    17
    Не пойму зачем так все усложнять. Ищем кусок кода начинается так
    Скрытое содержимое:
    **Скрытое содержимое: доступно при наличии 1 постов.**
    ищем ту часть где нужные нам цены
    Скрытое содержимое:
    **Скрытое содержимое: доступно при наличии 1 постов.**
    Фильтруем данные и собираем товарные карточки либо отдельными товарами

    например 1 товар
    Скрытое содержимое:
    **Скрытое содержимое: доступно при наличии 1 постов.**
    второй товар
    Скрытое содержимое:
    **Скрытое содержимое: доступно при наличии 1 постов.**
    тут есть и отдельные артикулы и обьем или название цвета и цена во всех вариациях (скидки, бонусные карты и т.д.)
     
    One_is_All и Root нравится это.
  11. One_is_All

    One_is_All Member Пользователи

    Регистрация:
    20 дек 2018
    Сообщения:
    14
    Идея очень хорошая (как говориться, все гениальное просто), не посмотрел полноценно на абракадабру, не думал, что в нем, что-то есть ценное, но эврика!

    Скрытое содержимое:
    **Скрытое содержимое: доступно при наличии 3 постов.**
     
    Последнее редактирование: 3 мар 2019
  12. Styud

    Styud New Member Пользователи

    Регистрация:
    24 мар 2017
    Сообщения:
    4
    Ссылки недоступны для гостей
    хочу спарсить все ссылки на новости . выводятся они при прокрутке вниз странички. можете помочь?

    п.с.
    вроде получилось.
    взял через лису пост запрос
    Ссылки недоступны для гостей

    и заголовки запроса.

    в настройках указал заголовки
    нашел 96 результатов на сейчас . можете проверить? у вас также получается? все лив ерно?

    п.с.
    нет не получается(
    при парсинге в ксв выдало 15 ссылок
    и больше такое не получается. и ссылок больше там. вручную пролистал... не до конца но явно больше новостей.


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

    п.с.
    попробовал с помощью php


    <PHP_SCRIPT=Ссылки недоступны для гостей
    <HEADERS></HEADERS>
    <REPLACE></REPLACE>
    mode=ajax
    next=true
    </PHP_SCRIPT>

    пробовал туда зоголовк вставлять


    не получилось(
     
    Последнее редактирование: 11 ноя 2020
  13. Root

    Root Администратор Администратор

    Регистрация:
    10 мар 2010
    Сообщения:
    14.818
    Город:
    Барнаул
    Здравствуйте.

    Так как в запросе не видно номера страницы выдачи, лучше парсить рубрики данного сайта с помощью WBAppCEF.

    Приложил настроенный проект для сбора ссылок.
     

    Вложения:

    Styud нравится это.
  14. Styud

    Styud New Member Пользователи

    Регистрация:
    24 мар 2017
    Сообщения:
    4
    попробовал еще через скролинг...
    но чет вылетает
    немогу понять почему.

    п.с.
    простите не разобрался что файл прикреплен и налепил уйму. это один и тот же файл
     

    Вложения:

    Последнее редактирование: 11 ноя 2020
  15. Styud

    Styud New Member Пользователи

    Регистрация:
    24 мар 2017
    Сообщения:
    4
    незаметил. сейчас посмотрю ваш пример
     
  16. Styud

    Styud New Member Пользователи

    Регистрация:
    24 мар 2017
    Сообщения:
    4
    а можете пояснить по функциям ? или сделать видеоурок чтобы понять как парсить такие сайты?


    п.с.

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

    а у вас парсинг ссылок.
    кстати запустил 1644 элемента. пояснение вашего кода не помешало бы. есть ли там условие чтобы убедиться что все ссылки были взяты?
    после ссылки надо будет загрузить на парсинг контента и забрать заголовки даты...
    а нельзя ли сразу так сделать?

    п.с. и еще вопрос.
    можно ли настроить так чтобы в след раз парсил до новости с определенной даты? чтобы снова все не парсить.
     

    Вложения:

    Последнее редактирование: 11 ноя 2020
  17. Root

    Root Администратор Администратор

    Регистрация:
    10 мар 2010
    Сообщения:
    14.818
    Город:
    Барнаул
    2020-11-11_09-21-47.png

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

    Можно, если парсить во вкладке "Контент".

    Нужно сделать новую функцию для этого, пока со временем ее реализации сориентировать не могу.
     
    Styud нравится это.

Поделиться этой страницей