Помогите с php пасрером

Тема в разделе "PHP", создана пользователем serguspl, 29 ноя 2014.

  1. serguspl

    serguspl

    Регистрация:
    15 дек 2012
    Сообщения:
    50
    Симпатии:
    3
    Задача, спарсить участок на этой картинке:
    со страници, к примеру http://football24.ua/football/onlineGame.do?objectId=15373
    Вот код, который парсит первую запись коментария ("Кінець матчу"):
    Как спарсить текст по строкам в массив и потом его отобразить?
     
    Последнее редактирование: 29 ноя 2014
  2. web2us

    web2us

    Регистрация:
    10 мар 2013
    Сообщения:
    18
    Симпатии:
    1
    самое простое, почитай про simple HTML dom
     
  3. $iD

    $iD Команда форума

    Регистрация:
    13 мар 2012
    Сообщения:
    3.580
    Симпатии:
    1.482
    картинки не видно.

    рекомендую использовать symfony/dom-crawler!

    будет картинка - будет пример использования)
     
  4. serguspl

    serguspl

    Регистрация:
    15 дек 2012
    Сообщения:
    50
    Симпатии:
    3
    @$iD, сейчас видна?
     
    $iD нравится это.
  5. web2us

    web2us

    Регистрация:
    10 мар 2013
    Сообщения:
    18
    Симпатии:
    1
    $iD, кстати, для общего развития - чем лучше?
     
  6. $iD

    $iD Команда форума

    Регистрация:
    13 мар 2012
    Сообщения:
    3.580
    Симпатии:
    1.482
    serguspl, держи:

    ну как это чем? сколько бы ты налопатил кодяры? у меня получилось 13 строчек чистой писанины.

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

    serguspl

    Регистрация:
    15 дек 2012
    Сообщения:
    50
    Симпатии:
    3
    $iD, спасибо)) тут только много фалов)))
    Я хотел разобраться))
     
  8. $iD

    $iD Команда форума

    Регистрация:
    13 мар 2012
    Сообщения:
    3.580
    Симпатии:
    1.482
    так файл тебе нужен один - index.php всё, что в папке vendor - это библиотеки, которые подключаются через composer.
     
  9. $iD

    $iD Команда форума

    Регистрация:
    13 мар 2012
    Сообщения:
    3.580
    Симпатии:
    1.482
    для php < 5.4 index.php будет выглядеть так:
    PHP:
    <?php

    require 'vendor/autoload.php';

    use 
    Goutte\Client;

    $config = array(
      
    'url' => 'http://football24.ua/football/onlineGame.do?objectId=15373',
      
    'selector' => '#online-game-actions-list-table tr .rightCell .player-action-description'
    );

    $client = new Client();
    $crawler $client->request('GET'$config['url']);

    $result = array();

    $result $crawler->filter($config['selector'])->each(function($node) {
      return 
    trim($node->text());
    });

    var_dump($result);
     
  10. $iD

    $iD Команда форума

    Регистрация:
    13 мар 2012
    Сообщения:
    3.580
    Симпатии:
    1.482
    если нужно вывести всё в браузер, то :
    PHP:
    <?php

    require 'vendor/autoload.php';

    use 
    Goutte\Client;

    $config = [
        
    'url' => 'http://football24.ua/football/onlineGame.do?objectId=15373',
        
    'selector' => '#online-game-actions-list-table tr .rightCell .player-action-description'
    ];

    $client = new Client();
    $crawler $client->request('GET'$config['url']);

    $result = [];

    $crawler->filter($config['selector'])->each(function($node) {
        echo 
    trim($node->text()) . '<br />';
    });
     
  11. serguspl

    serguspl

    Регистрация:
    15 дек 2012
    Сообщения:
    50
    Симпатии:
    3
    $iD, в таблицу запихнуть?
    вместо
    PHP:
    echo trim($node->text()) . '<br />';
    так?
    PHP:
        echo
        
    '<table>
        <tbody>
        <tr>'
        
    echo '<td>' $node->text() . '</td>';
        
    '</tr>
        </tbody>
        </table>'
    ;'
     
  12. $iD

    $iD Команда форума

    Регистрация:
    13 мар 2012
    Сообщения:
    3.580
    Симпатии:
    1.482
    PHP:
    echo '<table><tbody><tr>';
    $crawler->filter($config['selector'])->each(function($node) {
        echo 
    '<td>' trim($node->text()) . '</td>';
    });
    echo 
    '</tr></tbody></table>';

    добавь еще в конце:
    PHP:
    header('Content-Type: text/html; charset=utf-8');
    чтобы кодировку правильную отдавал.
     
  13. serguspl

    serguspl

    Регистрация:
    15 дек 2012
    Сообщения:
    50
    Симпатии:
    3
    PHP:
    <?php
    header
    ('Content-Type: text/html; charset=utf-8');
    require 
    'vendor/autoload.php';

    use 
    Goutte\Client;

    $config = [
        
    'url' => 'http://football24.ua/football/onlineGame.do?objectId=15299',
        
    'selector' => '#online-game-actions-list-table tr .rightCell .player-action-description'
    ];

    $client = new Client();
    $crawler $client->request('GET'$config['url']);

    $result = [];

    echo 
    '<table><tbody><tr>';
    $crawler->filter($config['selector'])->each(function($node) {
        echo 
    '<td>' trim($node->text()) . '</td>';
    });
    echo 
    '</tr></tbody></table>';


    });
     
  14. $iD

    $iD Команда форума

    Регистрация:
    13 мар 2012
    Сообщения:
    3.580
    Симпатии:
    1.482
    в конце не нужен.
    PHP:
    });
     
  15. $iD

    $iD Команда форума

    Регистрация:
    13 мар 2012
    Сообщения:
    3.580
    Симпатии:
    1.482
    PHP:
    <?php

    require 'vendor/autoload.php';

    use 
    Goutte\Client;

    $config = [
        
    'url' => 'http://football24.ua/football/onlineGame.do?objectId=15373',
        
    'selector' => '#game-actions-table-container'
    ];

    $client = new Client();
    $crawler $client->request('GET'$config['url']);

    header('Content-Type: text/html; charset=utf-8');

    echo 
    $crawler->filter($config['selector'])->html();
    Я тут подумал, раз тебе нужна вся таблица, так давай всю таблицу и заберём)
     
  16. serguspl

    serguspl

    Регистрация:
    15 дек 2012
    Сообщения:
    50
    Симпатии:
    3
    Все таки требуется через массив...как было в задаче с самого первого момента..
     
  17. $iD

    $iD Команда форума

    Регистрация:
    13 мар 2012
    Сообщения:
    3.580
    Симпатии:
    1.482
    ну так в чём проблема? берёшь архив из 6-ого поста таи как раз в массив и пихается.
     
  18. serguspl

    serguspl

    Регистрация:
    15 дек 2012
    Сообщения:
    50
    Симпатии:
    3
    $iD, как вывести тот массив табличкой?
     
  19. $iD

    $iD Команда форума

    Регистрация:
    13 мар 2012
    Сообщения:
    3.580
    Симпатии:
    1.482
    через foreach
     
  20. serguspl

    serguspl

    Регистрация:
    15 дек 2012
    Сообщения:
    50
    Симпатии:
    3
    PHP:
    $result $crawler->filter($config['selector'])->each(function($node) {
      return 
    trim($node->text());
    });
    Как после этого вывести не через:
    PHP:
    var_dump($result);
    а просто текстом через
    PHP:
    </br>