ФорумПрограммированиеПыхнуть хотите?F.A.Q. → Парсинг страницы сайта (пример: курсы валют на сайт).

Парсинг страницы сайта (пример: курсы валют на сайт).

  • md5

    Сообщения: 11949 Репутация: N Группа: в ухо

    Spritz 14 июля 2007 г. 9:43

    Парсинг страницы.



    Итак, парсинг страницы состоит из 3х основных частей.
    — Получение удаленной страницы;
    — Разбор содержимого и выделения нужных данных;
    — Сохранение и/или использование этих данных.



    1. Получение страницы легче всего сделать с помощью функции file_get_contents()

    2. Разбор содержимого чаще всего осуществляется для помощи регулярных выражений.
    О них можно почитать: в нашем F.A.Q. или на официальном сайте

    3. Данные, вытащенные с помощью регулярных выражений можно сохранить для дальнейшего использования или сразу отдать пользователю в браузер.


    Замечание!
    Очень часто регулярные выражения используют неоправданно! Например, для того чтобы определить, присутствует на странице какое-либо слово или нет. Для этого лучше всего использовать строковые функции, например strpos()


    Разберем пример.

    Допустим нам необходимо написать самый безобидный скрипт парсящий страницу — обновление курса валют с сайт ЦБ РФ для сегодняшней даты.


    <?php
    //Определяем сегодняшнюю дату в формате, который используется на сайте cbr.ru
    $date = date("d/m/Y");

    //Определим код нашей валюты на сайте cbr.ru
    //Америконский доллар
    $code='R01235';

    //Выполняем первый пункт, считываем страницу с курсами валют в переменную
    $file = file_get_contents("http://www.cbr.ru/scripts/XML_daily.asp?date_req=".$date);

    //Разбираем страницу с помощью регулярок:
    preg_match("/\<Valute ID=\"".$code."\".*?\>(.*?)\<\/Valute\>/is", $file, $m);

    preg_match("/<Value>(.*?)<\/Value>/is", $m[1], $r);

    //Запятую, отделяющую дробную часть заменяем на точку, и у нас в переменной $dollar находится курс доллара.
    $dollar = str_replace(",", ".", $r[1]);
    ?>
    все умрут, а я изумруд
  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 18 августа 2007 г. 14:59, спустя 35 дней 5 часов 15 минут

    Но не всегда удается так пропарсить =)
    Приходится играться с заголовками, куками, etc.

    Тогда приходит на выручку fsockopen() :)
    http://www.php.net/manual/ru/function.fsockopen.php

    + допустим запрет на вход с одного и тогоже ip по таймауту, и снова приходят fsockopen() + прокси :)
    adw/0
  • md5

    Сообщения: 11949 Репутация: N Группа: в ухо

    Spritz 19 августа 2007 г. 10:27, спустя 19 часов 27 минут 56 секунд

    ну это да
    здесь дан самый простой пример, показывающий как вобще подходить к задаче

    понятно, что парсить закрытую логином и паролем страницу необходимо при помощи сокетов или курла…
    все умрут, а я изумруд
  • Servack

    Сообщения: 6 Репутация: N Группа: Кто попало

    Spritz 4 марта 2009 г. 1:57, спустя 562 дня 16 часов 30 минут

    Здравсвуйте,у меня такой вот вопрос,надо сделать скрипт который будет заходить на сайт авторизовываться под логином и паролем,далее нажимает на пару кнопок и открывается та самая страничка с которой нужно взять инфу немного обработать и вывести на моем сайте.Подскажите как такое можно сделать
  • md5

    Сообщения: 11949 Репутация: N Группа: в ухо

    Spritz 4 марта 2009 г. 2:01, спустя 4 минуты 53 секунды


    Здравсвуйте,у меня такой вот вопрос,надо сделать скрипт который будет заходить на сайт авторизовываться под логином и паролем,далее нажимает на пару кнопок и открывается та самая страничка с которой нужно взять инфу немного обработать и вывести на моем сайте.Подскажите как такое можно сделать
    с помощью CURL
    все умрут, а я изумруд
  • Servack

    Сообщения: 6 Репутация: N Группа: Кто попало

    Spritz 4 марта 2009 г. 3:14, спустя 1 час 12 минут 23 секунды

    ВОт в курл я как раз и не врубаюсь,я его скачал а что дальше делать с дистрибутивом не знаю,и вообще в пхп не сильно шарю
  • md5

    Сообщения: 11949 Репутация: N Группа: в ухо

    Spritz 4 марта 2009 г. 3:17, спустя 2 минуты 44 секунды


    ВОт в курл я как раз и не врубаюсь,я его скачал а что дальше делать с дистрибутивом не знаю,и вообще в пхп не сильно шарю
    если не шаришь — читай про то, как послать запрос, подделать заголовки, что такое заголовки вобще
    или попроси кого-нибудь сделать это за тебя
    все умрут, а я изумруд
  • Servack

    Сообщения: 6 Репутация: N Группа: Кто попало

    Spritz 4 марта 2009 г. 4:10, спустя 53 минуты 48 секунд

    Чел сделай это за меня)))
  • md5

    Сообщения: 11949 Репутация: N Группа: в ухо

    Spritz 4 марта 2009 г. 4:25, спустя 14 минут 53 секунды


    Чел сделай это за меня)))
    100$
    все умрут, а я изумруд
  • Servack

    Сообщения: 6 Репутация: N Группа: Кто попало

    Spritz 4 марта 2009 г. 4:28, спустя 2 минуты 57 секунд

    Жесть это же форум помощи а не фриланс.ru
  • md5

    Сообщения: 11949 Репутация: N Группа: в ухо

    Spritz 4 марта 2009 г. 4:47, спустя 18 минут 19 секунд


    Жесть это же форум помощи а не фриланс.ru
    Жесть, это же форум помощи, а не форум рабов
    все умрут, а я изумруд
  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 4 марта 2009 г. 4:53, спустя 6 минут 5 секунд

    Servack, вот тебе и помогают за деньги. Если хочешь бесплатной помощи, то начни делать, а тебе подскажут что и как…
    adw/0
  • Servack

    Сообщения: 6 Репутация: N Группа: Кто попало

    Spritz 4 марта 2009 г. 5:01, спустя 8 минут 51 секунду

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

    Сообщения: 11949 Репутация: N Группа: в ухо

    Spritz 4 марта 2009 г. 5:46, спустя 44 минуты 7 секунд


    читай про то, как послать запрос, подделать заголовки, что такое заголовки вобще
    все умрут, а я изумруд
  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 4 марта 2009 г. 6:55, спустя 1 час 9 минут 14 секунд

    Servack, наберите в поиске по форуму "curl"
    adw/0

Пожалуйста, авторизуйтесь, чтобы написать комментарий!