Нужно ловить динамическую информацию, которая подгружается на сайт?

Ссылка скопирована
1 ответ

К примеру у меня есть страница Ссылка удалена модератором. (открывать желательно с Firefox иначе не будет информации(на хроме почему-то не работает)). И на нее динамически загружается информация, там если открыть инспектор, можно увидеть где подгружается блок с информацией. Он выглядит примерно так:

как поймать отсюда инфу?     {^{include sellerExtInfo}}        <div class="seller-details__parameter">            {{if registrationDate}}                <div class="seller-details__parameter-item">                    <p class="seller-details__parameter-value seller-details__parameter-value--time">{{if isNewSupplier}}Новый магазин{{else}}{{humanDate:registrationDate}}{{/if}}</p>                    <p class="seller-details__parameter-name">{{if !isNewSupplier && saleItemQuantity > 0}}продает на Wildberries{{else}}на Wildberries{{/if}}</p>                </div>            {{/if}}            {{if !hideSellsCount}}                <div class="seller-details__parameter-item">                    <p class="seller-details__parameter-value {{if saleItemQuantity > 0}}seller-details__parameter-value--delivered{{/if}}">{{if saleItemQuantity > 0}}{{spaceFormatted:saleItemQuantity}}{{else}}Нет{{/if}}</p>                    <p class="seller-details__parameter-name">{{pluralize: (saleItemQuantity || 0) 'проданный товар' 'проданного товара' 'проданных товаров'}}</p>                </div>            {{/if}}            {{if percent > 0 && saleItemQuantity > 0}}                <div class="seller-details__parameter-item">                    <p class="seller-details__parameter-value seller-details__parameter-value--delivery">{{:percent}}%</p>                    <p class="seller-details__parameter-name">доставок вовремя</p>                </div>            {{/if}}            {{if defectPercent != null && saleItemQuantity > 0}}                <div class="seller-details__parameter-item">                    <p class="seller-details__parameter-value seller-details__parameter-value--defective">{{:defectPercent}}%</p>                    <p class="seller-details__parameter-name">товаров с браком</p>                </div>            {{/if}}        </div>    {{/include}}

как поймать отсюда инфу? {^{include sellerExtInfo}} <div class="seller-details__parameter"> {{if registrationDate}} <div class="seller-details__parameter-item"> <p class="seller-details__parameter-value seller-details__parameter-value--time">{{if isNewSupplier}}Новый магазин{{else}}{{humanDate:registrationDate}}{{/if}}</p> <p class="seller-details__parameter-name">{{if !isNewSupplier && saleItemQuantity > 0}}продает на Wildberries{{else}}на Wildberries{{/if}}</p> </div> {{/if}} {{if !hideSellsCount}} <div class="seller-details__parameter-item"> <p class="seller-details__parameter-value {{if saleItemQuantity > 0}}seller-details__parameter-value--delivered{{/if}}">{{if saleItemQuantity > 0}}{{spaceFormatted:saleItemQuantity}}{{else}}Нет{{/if}}</p> <p class="seller-details__parameter-name">{{pluralize: (saleItemQuantity || 0) 'проданный товар' 'проданного товара' 'проданных товаров'}}</p> </div> {{/if}} {{if percent > 0 && saleItemQuantity > 0}} <div class="seller-details__parameter-item"> <p class="seller-details__parameter-value seller-details__parameter-value--delivery">{{:percent}}%</p> <p class="seller-details__parameter-name">доставок вовремя</p> </div> {{/if}} {{if defectPercent != null && saleItemQuantity > 0}} <div class="seller-details__parameter-item"> <p class="seller-details__parameter-value seller-details__parameter-value--defective">{{:defectPercent}}%</p> <p class="seller-details__parameter-name">товаров с браком</p> </div> {{/if}} </div> {{/include}}

Я пытался парсить сайт, мой парсер не видит этой информации...
Мне нужно ловить в коде данную информацию для конкретного продавца, язык кода не важен, я перепишу под свой ЯП. Возможно кто-то знает как поймать и обработать данную информацию?

Дополнительно:

Ответы:

Если я правильно понял задачу, то можно дождаться появления дерева и элементов нужных вам. Но придется всегда знать класс (и под каким он индексом) или id или data. Дальше берем этот элемент, проверяем есть ли он, после того как находим берем данные из всех дочерних узлов.
Можете вставить этот код в консоль в браузере чтобы проверить.

const arr = document.getElementsByClassName('seller-details__parameter'); (function traverse(node = arr[0]) {   // Проверяем тип узла, чтобы получить только текстовые узлы   if (node.nodeType === Node.TEXT_NODE && node.textContent.trim() !== '') {     console.log(node.textContent);   }   // Рекурсивно обходим все дочерние узлы   node.childNodes.forEach(traverse); })();

const arr = document.getElementsByClassName('seller-details__parameter'); (function traverse(node = arr[0]) { // Проверяем тип узла, чтобы получить только текстовые узлы if (node.nodeType === Node.TEXT_NODE && node.textContent.trim() !== '') { console.log(node.textContent); } // Рекурсивно обходим все дочерние узлы node.childNodes.forEach(traverse); })();

  • Мне бы узнать с какого скрипта подгружается информация и самому использовать этот скрипт, передавая в него что-то. В моем случае это sellerExtInfo.
  • Без так называемого парсера. Я всю информацию до этого получал из get запросов в виде json. А осталась только инфа которую подгружает этот скрипт.
Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Роман IT Ответ

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

1. Использование библиотеки для работы с веб-страницами, например, BeautifulSoup для Python или Simple HTML DOM Parser для PHP. Эти библиотеки позволяют парсить HTML-код страницы и извлекать нужную информацию, включая динамически загружаемые данные.

include('simple_html_dom.php');
 
$html = file_get_html('http://www.example.com');
foreach($html->find('div[class=dynamic-content]') as $element){
    echo $element->plaintext;
}

include('simple_html_dom.php'); $html = file_get_html('http://www.example.com'); foreach($html->find('div[class=dynamic-content]') as $element){ echo $element->plaintext; }

2. Использование инструментов для автоматизации браузера, например, Selenium WebDriver. С их помощью можно запускать браузер, загружать страницу и взаимодействовать с элементами на странице, чтобы получить динамические данные.

require_once('vendor/autoload.php');
use Facebook\WebDriver\Remote\RemoteWebDriver;
use Facebook\WebDriver\WebDriverBy;
 
$driver = RemoteWebDriver::create('http://localhost:4444/wd/hub', DesiredCapabilities::chrome());
$driver->get('http://www.example.com');
 
$element = $driver->findElement(WebDriverBy::className('dynamic-content'));
echo $element->getText();

require_once('vendor/autoload.php'); use Facebook\WebDriver\Remote\RemoteWebDriver; use Facebook\WebDriver\WebDriverBy; $driver = RemoteWebDriver::create('http://localhost:4444/wd/hub', DesiredCapabilities::chrome()); $driver->get('http://www.example.com'); $element = $driver->findElement(WebDriverBy::className('dynamic-content')); echo $element->getText();

3. Использование API, если сайт предоставляет доступ к данным через API. В этом случае можно обращаться к API сайта напрямую и получать нужные данные без необходимости парсинга HTML-кода.

4. Мониторинг сетевого трафика с помощью специализированных инструментов, таких как Wireshark, чтобы анализировать запросы и ответы, которые происходят при загрузке динамической информации на сайте.

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

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно