За последние 24 часа нас посетили 53894 программиста и 1717 роботов. Сейчас ищут 837 программистов ...

Парсинг с Simple Html Dom

Тема в разделе "PHP для новичков", создана пользователем Sice, 22 мар 2016.

  1. Sice

    Sice Активный пользователь

    С нами с:
    16 фев 2012
    Сообщения:
    45
    Симпатии:
    0
    Доброго времени суток. Пытаюсь запарсить архив тиражей с помощью библиотеки Simple Html Dom Parser.
    Есть код сайта:
    Код (PHP):
    1. <tr class="S2H"><td colspan="4" class="S2L">Футбол. До 17 лет. Чемпионат Европы. Элитный раунд</td><td class="bl">1</td><td>X</td><td class="br">2
    2. </td></tr>
    3. <tr><td>1</td><td>21.03 17:30</td><td class="S1L">Уэльс U17 - Швеция U17</td><td>0:1</td><td class="bl">32.00 / 30.81</td><td>28.00 / 26.00</td><td class="br">40.00 / 43.19
    4. </td></tr> 
    И так в итоге по 15 матчам в тираже.
    [​IMG]

    Мне требуется каждый отдельный атрибут добавить в бд, в одну запись. Есть структура бд следующего вида:
    • id - ид матча (от 1 до 15)[/*:m]
    • date (дата)[/*:m]
    • tourney (название лиги)[/*:m]
    • match (название команд)[/*:m]
    • score (счёт)[/*:m]
    • kef (распределение шансов, коэффициенты).[/*:m][/list:u]
      И так отправить 15 записей с одного тиража в БД.

      Я пытаюсь вытащить по одной записи вот таким образом:
      Код (PHP):
      1. <?
      2. include 'simple_html_dom.php';
      3.  
      4. $html = file_get_html('http://toto.fonsportsbet.com/list/ru/322/');
      5. $res = $html->find('tr', 5);
      6. echo $res;
      7.  
      8. ?>
      Результат такой:
      Как мне эти данные правильно разделить ? или как перебирать после S2H каждый <td> ?
      И еще вопрос, если искать класс S2H, то нету данных о лиге (класс S2L).

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

      Заранее огромное спасибо!

      Подсказка от модератора:
      Любой код или текст конфигурации пишите между тегом [code=php] и [/code].
      Используйте отступы в коде для форматирования текста.
      Это помогает быстрее понять вас, увеличивает шанс на получение ответа.
      Что выделять? Например: PHP, HTML, CSS, JavaScript, SQL, XML, .htaccess, ini, регулярные выражения, код шаблонизаторов, любая другая разметка, результаты array/object dump и т. д.
     
  2. Period

    Period Новичок

    С нами с:
    29 дек 2014
    Сообщения:
    148
    Симпатии:
    1
    Вряд ли $res принадлежит типу string.
     
  3. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Period если там объект с волшебным методом __toString()
     
  4. mirosas

    mirosas Активный пользователь

    С нами с:
    17 июл 2015
    Сообщения:
    236
    Симпатии:
    5
    Simple Html Dom справляется с 3 задачами парсинга из 5. Благо изучается за пару часов. В 2-х оставшихся нужно что-то еще доделывать. Либо регулярки, либо функции пхп по работе с текстами.

    Добавлено спустя 42 минуты 3 секунды:
    Для извлечения текста нужно делать так:
    $res = $html->find('tr', 5)->plaintext;

    А можно еще делать так: $res = $html->find('tr.S2H',0)->find('td.S2L',0)->plaintext; (собственно для того он и нужен, чтобы путешествовать по дереву html документа).