За последние 24 часа нас посетили 16773 программиста и 1641 робот. Сейчас ищут 863 программиста ...

Как парсить определенный участок кода ? DOM Parser

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

  1. Sice

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

    С нами с:
    16 фев 2012
    Сообщения:
    45
    Симпатии:
    0
    Доброго времени суток друзья. Использую библиотеку Simple HTML DOM Parser для парсинга сайта. Делаю для себя, информацию никакую не ворую, просто для удобства и статистика тиражей в тотализаторе.
    Есть код страницы:
    Код (PHP):
    1. <BODY jackpotService="/old/jackpot.json.jsp" langSwitchDisabled="true" navigationService="/cache/designLinks.jscp.php">
    2.  
    3.  
    4. <div id="customerPanel"> 
    5. <table class="header-aux-panel">
    6.     <tr>
    7.     <td width=99%></td>
    8.     <td nowrap class="header-regtab">[url="https://reg.fonbet.com/users/ru/registration.html"]Регистрация[/url]</td>
    9.     </tr>
    10. </table>
    11. </div>
    12.  
    13. <div id="content">
    14.  
    15. </table><div id=toto>
    16.  
    17. <table width=99% border=0>
    18.  <tr><td class=S4>ФОН-Тото+. Тираж 108<td class=S0>Последнее обновление 08.07.15 23:00
    19. </table>
    20. <table width=99% border=0 cellspacing=0>
    21. <tr>
    22.  <td valign=top width=55%><table width=100% border=0 class=S1 cellspacing=0>
    23.    <tr class=S3><td colspan=3>Событие<td>Счет
    24.    <td class=blr colspan=3>Вероятности исходов по букмекерским оценкам/<br>распределение пула по исходам, в %
    25.    <tr class=S2H><td colspan=4 class=S2L>Футбол. Румыния. Суперкубок<td class=bl>1<td>X<td class=br>2
    26. <tr><td>1<td>08.07 21:00<td class=S1L>Стяуа Бухарест - Тыргу-Муреш<td>0:1<td class=bl>59.00 / 58.80<td>26.00 / 23.21<td class=br>15.00 / 17.98
    27. <tr class=S2H><td colspan=4 class=S2L>Футбол. Юж Корея. Суперлига<td class=bl>1<td>X<td class=br>2
    28. <tr><td>2<td>08.07 13:30<td class=S1L>Соннам - Сеул ФК<td>1:1<td class=bl>39.00 / 31.36<td>30.00 / 31.99<td class=br>31.00 / 36.65
    29. <tr class=S2H><td colspan=4 class=S2L>Футбол. Япония. 2-й дивизион<td class=bl>1<td>X<td class=br>2
    30. <tr><td>3<td>08.07 13:00<td class=S1L>Гифу - Токио-Верди<td>0:2<td class=bl>34.00 / 30.85<td>28.00 / 26.47<td class=br>38.00 / 42.68
    31. <tr><td>4<td>08.07 13:00<td class=S1L>Зеспакусацу Гумма - Кумамото<td>1:1<td class=bl>38.00 / 40.37<td>28.00 / 31.01<td class=br>34.00 / 28.62
    32. <tr><td>5<td>08.07 13:00<td class=S1L>Каназава - Чиба<td>0:0<td class=bl>29.00 / 29.62<td>29.00 / 31.66<td class=br>42.00 / 38.72
    33. <tr><td>6<td>08.07 13:00<td class=S1L>Киото Санга - Токушима<td>0:1<td class=bl>45.00 / 47.02<td>28.00 / 28.99<td class=br>27.00 / 23.99
    34. <tr><td>7<td>08.07 13:00<td class=S1L>Оита - Мито<td>1:1<td class=bl>43.00 / 42.52<td>28.00 / 31.22<td class=br>29.00 / 26.26
    35. <tr><td>8<td>08.07 13:00<td class=S1L>Саппоро - Омия<td>2:3<td class=bl>27.00 / 25.45<td>28.00 / 27.50<td class=br>45.00 / 47.05
    36. <tr><td>9<td>08.07 13:00<td class=S1L>Фаджано Окаяма - Ви-Варен Нагасаки<td>1:1<td class=bl>31.00 / 34.64<td>29.00 / 33.17<td class=br>40.00 / 32.19
    37. <tr><td>10<td>08.07 13:00<td class=S1L>Эхиме - Точиджи<td>0:0<td class=bl>39.00 / 48.59<td>28.00 / 27.43<td class=br>33.00 / 23.98
    38. <tr><td>11<td>08.07 13:30<td class=S1L>Ависпа Фукуока - Китакюсю<td>4:2<td class=bl>43.00 / 52.31<td>28.00 / 23.97<td class=br>29.00 / 23.72
    39. <tr class=S2H><td colspan=4 class=S2L>Футбол. Аргентина. Премьер-Лига<td class=bl>1<td>X<td class=br>2
    40. <tr><td>12<td>09.07 02:10<td class=S1L>Тигре - Ривер Плейт<td>-<td class=bl>26.00 / 25.12<td>30.00 / 31.12<td class=br>44.00 / 43.76
    41. <tr class=S2H><td colspan=4 class=S2L>Футбол. Бразилия. Серия А<td class=bl>1<td>X<td class=br>2
    42. <tr><td>13<td>09.07 01:30<td class=S1L>Гойяс - Сантос<td>-<td class=bl>39.00 / 38.67<td>29.00 / 31.52<td class=br>32.00 / 29.81
    43. <tr><td>14<td>09.07 01:30<td class=S1L>Коритиба - Понте-Прета<td>-<td class=bl>49.00 / 53.05<td>27.00 / 24.40<td class=br>24.00 / 22.55
    44. <tr><td>15<td>09.07 01:30<td class=S1L>Шапекоенсе СК - Гремио РС<td>-<td class=bl>38.00 / 26.29<td>31.00 / 27.03<td class=br>31.00 / 46.68
    45.  
    46.  </table>
    47.  <td width=2%> 
    48.  <td valign=top width=43%>
    49.    <table width=100% border=0 cellspacing=0 cellpadding=0>
    50.     <tr><td><table width=100% border=0 cellspacing=0 class=S1B>
    51.      <tr><td colspan=2 class=S3>Параметры тиража
    52.      <tr><td>Джекпот<td class=S1R>9 024 004
    53.      <tr><td>Пул<td class=S1R>7 123 536
    54.      <tr><td>Призовой фонд<td class=S1R>6 411 182
    55.      <tr><td>Принято карточек<td class=S1R>68 116
    56.      <tr><td>Принято вариантов<td class=S1R>138 408
    57.     </table>
    58.     <tr><td> 
    59.     
    60.     <tr><td><table width=100% border=1 class=S1 cellspacing=0>
    61.      <tr><td colspan=6 class=S3>Раскладка по категориям
    62.      <tr><td><b>NN<td><b>Процент<td><b>Призовой фонд<td><b>Угадано<td><b>Угадано (руб)<td><b>Выплата на 1 руб
    63.      <tr><td>15<td>10<td class=S1R>9 665 122<td>0<td class=S1R>0<td class=S1R>0.0000
    64. <tr><td>14<td>10<td class=S1R>641 118<td>0<td class=S1R>0<td class=S1R>0.0000
    65. <tr><td>13<td>10<td class=S1R>641 118<td>0<td class=S1R>0<td class=S1R>0.0000
    66. <tr><td>12<td>10<td class=S1R>641 118<td>0<td class=S1R>0<td class=S1R>0.0000
    67. <tr><td>11<td>10<td class=S1R>641 118<td>0<td class=S1R>0<td class=S1R>0.0000
    68. <tr><td>10<td>18<td class=S1R>1 154 013<td>0<td class=S1R>0<td class=S1R>0.0000
    69. <tr><td>9<td>32<td class=S1R>2 051 578<td>0<td class=S1R>0<td class=S1R>0.0000
    70.  
    71.     </table>
    72.     <tr><td> 
    73.     <tr><td class=S1L><b>Список ВСЕХ принятых карточек: 
    74.       <A HREF="kvits.htm" TARGET=_BLANK> HTML</A> (3609k)  
    75.       <A HREF="kvits.zip"> ZIP</A> (630k)  
    76.     
    77.   </table>
    78.  
    79. <tr><td colspan=3><hr>
    80. <tr><td colspan=3 class=S4>Количество вариантов, претендующих на выигрышные категории
    81. <tr>
    82.  <td colspan=3 valign=top>
    83.   <table width=100% border=0 class=S1 cellspacing=0>
    84.    <tr class=S3><td colspan=3 >Событие
    85.                 <td colspan=7 class=bl>Победа 1
    86.                 <td colspan=7 class=bl>Ничья
    87.                 <td colspan=7 class=blr>Победа 2
    88.     <tr class=S2H><td colspan=3 class=S2L>Футбол. Румыния. Суперкубок<td class=bl>15<td>14<td>13<td>12<td>11<td>10<td>9<td class=bl>15<td>14<td>13<td>12<td>11<td>10<td>9<td class=bl>15<td>14<td>13<td>12<td>11<td>10<td class=br>9
    89. <tr><td>1<td>08.07 21:00<td class=S1L>Стяуа Бухарест - Тыргу-Муреш<td class=bl> <td> <td> <td> <td> <td> <td> <td class=bl> <td> <td> <td> <td> <td> <td> <td class=bl> <td> <td> <td> <td> <td> <td class=br> 
    90. <tr class=S2H><td colspan=3 class=S2L>Футбол. Юж Корея. Суперлига<td class=bl>15<td>14<td>13<td>12<td>11<td>10<td>9<td class=bl>15<td>14<td>13<td>12<td>11<td>10<td>9<td class=bl>15<td>14<td>13<td>12<td>11<td>10<td class=br>9
    91. <tr><td>2<td>08.07 13:30<td class=S1L>Соннам - Сеул ФК<td class=bl> <td> <td> <td> <td> <td> <td> <td class=bl> <td> <td> <td> <td> <td> <td> <td class=bl> <td> <td> <td> <td> <td> <td class=br> 
    92. <tr class=S2H><td colspan=3 class=S2L>Футбол. Япония. 2-й дивизион<td class=bl>15<td>14<td>13<td>12<td>11<td>10<td>9<td class=bl>15<td>14<td>13<td>12<td>11<td>10<td>9<td class=bl>15<td>14<td>13<td>12<td>11<td>10<td class=br>9
    93. <tr><td>3<td>08.07 13:00<td class=S1L>Гифу - Токио-Верди<td class=bl> <td> <td> <td> <td> <td> <td> <td class=bl> <td> <td> <td> <td> <td> <td> <td class=bl> <td> <td> <td> <td> <td> <td class=br> 
    94. <tr><td>4<td>08.07 13:00<td class=S1L>Зеспакусацу Гумма - Кумамото<td class=bl> <td> <td> <td> <td> <td> <td> <td class=bl> <td> <td> <td> <td> <td> <td> <td class=bl> <td> <td> <td> <td> <td> <td class=br> 
    95. <tr><td>5<td>08.07 13:00<td class=S1L>Каназава - Чиба<td class=bl> <td> <td> <td> <td> <td> <td> <td class=bl> <td> <td> <td> <td> <td> <td> <td class=bl> <td> <td> <td> <td> <td> <td class=br> 
    96. <tr><td>6<td>08.07 13:00<td class=S1L>Киото Санга - Токушима<td class=bl> <td> <td> <td> <td> <td> <td> <td class=bl> <td> <td> <td> <td> <td> <td> <td class=bl> <td> <td> <td> <td> <td> <td class=br> 
    97. <tr><td>7<td>08.07 13:00<td class=S1L>Оита - Мито<td class=bl> <td> <td> <td> <td> <td> <td> <td class=bl> <td> <td> <td> <td> <td> <td> <td class=bl> <td> <td> <td> <td> <td> <td class=br> 
    98. <tr><td>8<td>08.07 13:00<td class=S1L>Саппоро - Омия<td class=bl> <td> <td> <td> <td> <td> <td> <td class=bl> <td> <td> <td> <td> <td> <td> <td class=bl> <td> <td> <td> <td> <td> <td class=br> 
    99. <tr><td>9<td>08.07 13:00<td class=S1L>Фаджано Окаяма - Ви-Варен Нагасаки<td class=bl> <td> <td> <td> <td> <td> <td> <td class=bl> <td> <td> <td> <td> <td> <td> <td class=bl> <td> <td> <td> <td> <td> <td class=br> 
    100. <tr><td>10<td>08.07 13:00<td class=S1L>Эхиме - Точиджи<td class=bl> <td> <td> <td> <td> <td> <td> <td class=bl> <td> <td> <td> <td> <td> <td> <td class=bl> <td> <td> <td> <td> <td> <td class=br> 
    101. <tr><td>11<td>08.07 13:30<td class=S1L>Ависпа Фукуока - Китакюсю<td class=bl> <td> <td> <td> <td> <td> <td> <td class=bl> <td> <td> <td> <td> <td> <td> <td class=bl> <td> <td> <td> <td> <td> <td class=br> 
    102. <tr class=S2H><td colspan=3 class=S2L>Футбол. Аргентина. Премьер-Лига<td class=bl>15<td>14<td>13<td>12<td>11<td>10<td>9<td class=bl>15<td>14<td>13<td>12<td>11<td>10<td>9<td class=bl>15<td>14<td>13<td>12<td>11<td>10<td class=br>9
    103. <tr><td>12<td>09.07 02:10<td class=S1L>Тигре - Ривер Плейт<td class=bl>0<td>6<td>66<td>581<td>2578<td>9002<td>23913<td class=bl>0<td>7<td>112<td>762<td>3362<td>10791<td>26343<td class=bl>1<td>10<td>171<td>931<td>3833<td>11868<td class=br>29023
    104. <tr class=S2H><td colspan=3 class=S2L>Футбол. Бразилия. Серия А<td class=bl>15<td>14<td>13<td>12<td>11<td>10<td>9<td class=bl>15<td>14<td>13<td>12<td>11<td>10<td>9<td class=bl>15<td>14<td>13<td>12<td>11<td>10<td class=br>9
    105. <tr><td>13<td>09.07 01:30<td class=S1L>Гойяс - Сантос<td class=bl>0<td>8<td>107<td>635<td>3048<td>10394<td>27170<td class=bl>1<td>11<td>140<td>957<td>3751<td>11384<td>26789<td class=bl>0<td>4<td>102<td>682<td>2974<td>9883<td class=br>25320
    106. <tr><td>14<td>09.07 01:30<td class=S1L>Коритиба - Понте-Прета<td class=bl>1<td>13<td>165<td>1034<td>4360<td>13248<td>31233<td class=bl>0<td>5<td>86<td>595<td>2721<td>9366<td>24213<td class=bl>0<td>5<td>98<td>645<td>2692<td>9047<td class=br>23833
    107. <tr><td>15<td>09.07 01:30<td class=S1L>Шапекоенсе СК - Гремио РС<td class=bl>0<td>4<td>95<td>582<td>2574<td>8960<td>24230<td class=bl>0<td>4<td>80<td>651<td>2973<td>10048<td>24857<td class=bl>1<td>15<td>174<td>1041<td>4226<td>12653<td class=br>30192
    108.  
    109.    </table>
    110.  
    111. </table>
    112. </div>
    113. </BODY></HTML>
    Я хочу спарсить так все матчи, которые дали в тотализаторе и вывести их отдельно на экран.
    Делаю это так:
    PHP:
    1.  
    2. $res = $html->find('.S1L');
    3. echo $res[6];
    Массив успешно заполняется, но в определенный момент (после 15 индекса) ненужными уже мне данными. Мне нужно спарсить только 15 матчей (они идут с классом S1L) остальные уже не требуются.

    Возник вопрос. Как парсить определенный участок кода на странице ? В моём случае, мне нужно парсить из всего этого только:
    Код (PHP):
    1. <table width=99% border=0>
    2.  <tr><td class=S4>ФОН-Тото+. Тираж 108<td class=S0>Последнее обновление 08.07.15 23:00
    3. </table>
    4. <table width=99% border=0 cellspacing=0>
    5. <tr>
    6.  <td valign=top width=55%><table width=100% border=0 class=S1 cellspacing=0>
    7.    <tr class=S3><td colspan=3>Событие<td>Счет
    8.    <td class=blr colspan=3>Вероятности исходов по букмекерским оценкам/<br>распределение пула по исходам, в %
    9.    <tr class=S2H><td colspan=4 class=S2L>Футбол. Румыния. Суперкубок<td class=bl>1<td>X<td class=br>2
    10. <tr><td>1<td>08.07 21:00<td class=S1L>Стяуа Бухарест - Тыргу-Муреш<td>0:1<td class=bl>59.00 / 58.80<td>26.00 / 23.21<td class=br>15.00 / 17.98
    11. <tr class=S2H><td colspan=4 class=S2L>Футбол. Юж Корея. Суперлига<td class=bl>1<td>X<td class=br>2
    12. <tr><td>2<td>08.07 13:30<td class=S1L>Соннам - Сеул ФК<td>1:1<td class=bl>39.00 / 31.36<td>30.00 / 31.99<td class=br>31.00 / 36.65
    13. <tr class=S2H><td colspan=4 class=S2L>Футбол. Япония. 2-й дивизион<td class=bl>1<td>X<td class=br>2
    14. <tr><td>3<td>08.07 13:00<td class=S1L>Гифу - Токио-Верди<td>0:2<td class=bl>34.00 / 30.85<td>28.00 / 26.47<td class=br>38.00 / 42.68
    15. <tr><td>4<td>08.07 13:00<td class=S1L>Зеспакусацу Гумма - Кумамото<td>1:1<td class=bl>38.00 / 40.37<td>28.00 / 31.01<td class=br>34.00 / 28.62
    16. <tr><td>5<td>08.07 13:00<td class=S1L>Каназава - Чиба<td>0:0<td class=bl>29.00 / 29.62<td>29.00 / 31.66<td class=br>42.00 / 38.72
    17. <tr><td>6<td>08.07 13:00<td class=S1L>Киото Санга - Токушима<td>0:1<td class=bl>45.00 / 47.02<td>28.00 / 28.99<td class=br>27.00 / 23.99
    18. <tr><td>7<td>08.07 13:00<td class=S1L>Оита - Мито<td>1:1<td class=bl>43.00 / 42.52<td>28.00 / 31.22<td class=br>29.00 / 26.26
    19. <tr><td>8<td>08.07 13:00<td class=S1L>Саппоро - Омия<td>2:3<td class=bl>27.00 / 25.45<td>28.00 / 27.50<td class=br>45.00 / 47.05
    20. <tr><td>9<td>08.07 13:00<td class=S1L>Фаджано Окаяма - Ви-Варен Нагасаки<td>1:1<td class=bl>31.00 / 34.64<td>29.00 / 33.17<td class=br>40.00 / 32.19
    21. <tr><td>10<td>08.07 13:00<td class=S1L>Эхиме - Точиджи<td>0:0<td class=bl>39.00 / 48.59<td>28.00 / 27.43<td class=br>33.00 / 23.98
    22. <tr><td>11<td>08.07 13:30<td class=S1L>Ависпа Фукуока - Китакюсю<td>4:2<td class=bl>43.00 / 52.31<td>28.00 / 23.97<td class=br>29.00 / 23.72
    23. <tr class=S2H><td colspan=4 class=S2L>Футбол. Аргентина. Премьер-Лига<td class=bl>1<td>X<td class=br>2
    24. <tr><td>12<td>09.07 02:10<td class=S1L>Тигре - Ривер Плейт<td>-<td class=bl>26.00 / 25.12<td>30.00 / 31.12<td class=br>44.00 / 43.76
    25. <tr class=S2H><td colspan=4 class=S2L>Футбол. Бразилия. Серия А<td class=bl>1<td>X<td class=br>2
    26. <tr><td>13<td>09.07 01:30<td class=S1L>Гойяс - Сантос<td>-<td class=bl>39.00 / 38.67<td>29.00 / 31.52<td class=br>32.00 / 29.81
    27. <tr><td>14<td>09.07 01:30<td class=S1L>Коритиба - Понте-Прета<td>-<td class=bl>49.00 / 53.05<td>27.00 / 24.40<td class=br>24.00 / 22.55
    28. <tr><td>15<td>09.07 01:30<td class=S1L>Шапекоенсе СК - Гремио РС<td>-<td class=bl>38.00 / 26.29<td>31.00 / 27.03<td class=br>31.00 / 46.68
    29.  
    30.  </table>
    Сложность для меня заключается в том, что может быть разное количество этих S1L и не вариант парсить только 15 классов S1L. Заранее большое спасибо.

    PHP, JavaScript, SQL и другой код пишите внутри тегов
    Код ( (Unknown Language)):
    1. [b]php][/b]Тут код[b][/[/b][b]code][/b][/color]
     
  2. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    всегда с позиции сервиса надо смотреть. у них есть апи? - пользуйтесь. нет? - предложите. остальное - воровство, каким бы энтузиазмом вы его не пытались прикрыть
     
  3. Sice

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

    С нами с:
    16 фев 2012
    Сообщения:
    45
    Симпатии:
    0
    API нету. Ну какая мне выгода от этого воровства ? Только личная, для статистики, не на общее обозрение. Это же не воровство какого-то авторского контента..
     
  4. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    ну вот. в любом случае на данном ресурсе было решено не потакать ворам контента. длясебяшные они там или какие - не важно.
     
  5. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Автор, договорись с сервисом. Того гляди, тебе еще бабла дадут за это. А пока низачот.
     
  6. Igorek

    Igorek Новичок

    С нами с:
    9 июл 2015
    Сообщения:
    1
    Симпатии:
    0
    Бред какой-то...
    По вашей логике любой HTTP запрос, если он не инициирован браузером - воровство. Наличие апишки никакой роли в этом не играет. Для создателей ресурса нет никакой разницы каким образом вы получили их контент, потому что в конечном итоге это все равно HTTP request, но, в большинстве случаев, "распространять" этот контент, как минимум, без указания ссылки на источник - это да, не есть хорошо. Зависит от условий самого ресурса. Некоторые и это позволяют.
    Вопрос в догонку:
    У меня операционка без графического интерфейса - lynx, лучшее на что я могу расчитывать. Будучи немного знаком с программированием, я решил написать небольшой скриптец для парсинга статистики ставок на матчи моего любомого клуба, за которым слежу постоянно. Вопрос - я вор?!
     
  7. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Igorek это защита от того что потом людям которые тебе помогали реализовывать это предъявят претензии или форуму.
     
  8. engine.energy

    engine.energy Новичок

    С нами с:
    31 май 2015
    Сообщения:
    149
    Симпатии:
    0
    1 годпройдет и бац ваш сайт стал коряво показывает почему?

    потому что сайт обновил и вы парсите мда! Пора вам переходи на API тем быстрее работы чем вы даете им накручивать популярность!