Как спарсить данные с сайта?

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

Добрый день всем. Прошу помочь. Я только начала учить php хочу спарсить валюту с сайта https://kase.kz/ru/currency/
Вот код который я написала

<?php  require_once 'simple_html_dom.php'; $data = file_get_html('https://kase.kz/ru/currency/'); $result = []; if($data->innertext!='' and count($data->find('.currency-tabs__item a  span .big'))){   foreach($data->find('.currency-tabs__item a') as $a){     echo '<p>'.$a->plaintext.'</p>';   } } ?>

<?php require_once 'simple_html_dom.php'; $data = file_get_html('https://kase.kz/ru/currency/'); $result = []; if($data->innertext!='' and count($data->find('.currency-tabs__item a span .big'))){ foreach($data->find('.currency-tabs__item a') as $a){ echo '<p>'.$a->plaintext.'</p>'; } } ?>

вот ссылка на библиотеку

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

Как спарсить данные с сайта?

Пыталась перевести данные в массив тоже не получается
вот код

require_once 'simple_html_dom.php'; $data = file_get_html('https://kase.kz/ru/currency/'); if($data->innertext!='' and count($data->find('.currency-tabs__item a  span .big'))){   foreach($data->find('.currency-tabs__item a') as $a){     $htmlText = "'<p>'.$a->plaintext.'</p>'";     $textArray = explode('<p>', $htmlText);     $textArray = array_filter($textArray, 'strlen');     print_r($textArray);   } }

require_once 'simple_html_dom.php'; $data = file_get_html('https://kase.kz/ru/currency/'); if($data->innertext!='' and count($data->find('.currency-tabs__item a span .big'))){ foreach($data->find('.currency-tabs__item a') as $a){ $htmlText = "'<p>'.$a->plaintext.'</p>'"; $textArray = explode('<p>', $htmlText); $textArray = array_filter($textArray, 'strlen'); print_r($textArray); } }

Как спарсить данные с сайта?

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

Всем спасибо, и только мне, человеку, пытавшемуся научить пользоваться удочкой - нет xd

А не проще парсить напрямую, без цикла?

$usdkzt = $data->find('a[href="#USDKZT"] .currency-round__round .big', 0)->innertext();

$usdkzt = $data->find('a[href="#USDKZT"] .currency-round__round .big', 0)->innertext();

  • Боже спасибо вам больше. Храни вас бог)

Ответы:

1. Где у вас проверка, что валюта должна быть евро доллар и рубль для вывода?
2. Где вы хотите видеть массив? Вы сами используете plaintext, чтобы вывести строку
3. Еще не до конца понятно, почему вы сначала используете '.currency-tabs__item a span .big', а далее '.currency-tabs__item a'

  • подскажите пожалуйста как вывести я не понимаю((((
  • AlexandraSvetik, вы и так выводите, нужно только немного разобраться в моих наводящих вопросах
  • maksam07, вот сделала проверку нужно теперь как то вывести самый первый результат
    <?php  require_once 'simple_html_dom.php'; $data = file_get_html('https://kase.kz/ru/currency/'); if($data->innertext!='' and count($data->find('.currency-tabs__item a'))){   foreach($data->find('.currency-tabs__item a') as $a){    if(preg_match("/USD/", $a)) { 		echo "$a'<br>'"; 	}          // $htmlText = "'<p>'.$a->plaintext.'</p>'";     // $textArray = explode('<p>', $htmlText);     // $textArray = array_filter($textArray, 'strlen');     // print_r($textArray);   } }  ?>

    <?php require_once 'simple_html_dom.php'; $data = file_get_html('https://kase.kz/ru/currency/'); if($data->innertext!='' and count($data->find('.currency-tabs__item a'))){ foreach($data->find('.currency-tabs__item a') as $a){ if(preg_match("/USD/", $a)) { echo "$a'<br>'"; } // $htmlText = "'<p>'.$a->plaintext.'</p>'"; // $textArray = explode('<p>', $htmlText); // $textArray = array_filter($textArray, 'strlen'); // print_r($textArray); } } ?>

  • AlexandraSvetik, почему используете preg_match, а не stripos ? Т.к. вы только начали учить пхп, вряд ли вы уже хорошо знаете регулярные выражения и можете понимать, как они пишутся
  • AlexandraSvetik,
    К тому же, можно спарсить именно код валюты отдельно, тогда и stripos не нужен будет
    spoiler

    Как спарсить данные с сайта?

  • maksam07, мне не код а значение надо
  • AlexandraSvetik,

    мне не код а значение надо

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

Если правильно помню, то в цикле можно проверять

if (!in_array($a->href, ['#USDKZT', '#EURKZT']) ) continue;

if (!in_array($a->href, ['#USDKZT', '#EURKZT']) ) continue;

Как вариант использовать внутренние запросы

<?php  $curl = curl_init();  curl_setopt_array($curl, array(   CURLOPT_URL => 'https://kase.kz/charts/currency/history',   CURLOPT_RETURNTRANSFER => true,   CURLOPT_ENCODING => '',   CURLOPT_MAXREDIRS => 10,   CURLOPT_TIMEOUT => 0,   CURLOPT_FOLLOWLOCATION => true,   CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,   CURLOPT_CUSTOMREQUEST => 'POST',   CURLOPT_POSTFIELDS =>'symbol=USDKZT_TOM&resolution=D&from=1658040727&to=1658040727&chart_language_code=ru',   CURLOPT_HTTPHEADER => array(     'Accept: */*',     'Content-Type: application/x-www-form-urlencoded; charset=UTF-8',     'Cookie: __Host-csrftoken=КУКА; ',     'Referer: https://kase.kz/ru/currency/',     'X-CSRFToken: ТОКЕН',     'X-KL-Ajax-Request: Ajax_Request',     'X-Requested-With: XMLHttpRequest'   ), ));  $response = curl_exec($curl);  curl_close($curl); echo $response;

<?php $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => 'https://kase.kz/charts/currency/history', CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => '', CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => 'POST', CURLOPT_POSTFIELDS =>'symbol=USDKZT_TOM&resolution=D&from=1658040727&to=1658040727&chart_language_code=ru', CURLOPT_HTTPHEADER => array( 'Accept: */*', 'Content-Type: application/x-www-form-urlencoded; charset=UTF-8', 'Cookie: __Host-csrftoken=КУКА; ', 'Referer: https://kase.kz/ru/currency/', 'X-CSRFToken: ТОКЕН', 'X-KL-Ajax-Request: Ajax_Request', 'X-Requested-With: XMLHttpRequest' ), )); $response = curl_exec($curl); curl_close($curl); echo $response;

Правда непонятно, как часто меняются куки и токен, по идее можно делать запрос на получения куки и токена и проверить, когда она "протухнет". Обычно действуют от 1 до 24 часов.
Payload: symbol=USDKZT_TOM&resolution=D&from=1658040727&to=1658040727
Время указываем текущие (или диапазон). Если указать одинаковыми:

{"c": [486.35], "t": [1658102400], "o": [482.0], "v": [131183750], "h": [487.3], "l": [482.0], "s": "ok"}

{"c": [486.35], "t": [1658102400], "o": [482.0], "v": [131183750], "h": [487.3], "l": [482.0], "s": "ok"}

  • и вам спасибо)
Нужно решить такую задачу?

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

Заказать помощь
Лучший ответ
1
Дмитрий К. Ответ

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

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

Далее необходимо выбрать подходящий инструмент для парсинга. Существует множество бесплатных и платных программ для парсинга данных, например, BeautifulSoup, Scrapy, Selenium и др. Каждый из них имеет свои особенности и возможности, поэтому стоит выбрать тот, который лучше всего подходит под вашу задачу.

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

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

Важно помнить, что при парсинге данных с сайта необходимо соблюдать законы о защите персональных данных и правила пользования сайтом. Некорректное использование парсера может привести к блокировке вашего IP-адреса или даже к юридическим последствиям.

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

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

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

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

комментарий

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

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