ФорумПрограммированиеPHP для идиотов → Парсинг страницы

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

  • Karlovich

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

    Spritz 8 мая 2009 г. 13:42

    Дпоскажите как отпарсить html, вроде все просто но не совсем.

    есть html

    …. bla bla bla….
    <div class="description">
     <span style='float: right'></span>  
     <h2>Bakery</h2>
     
       <p>3501 Broadway <br />New York, NY 10015 <a href="map/map-link-107172" id="map-link-107172">Map</a></p>

     <ul>
    <li class="number">(856) 629-6271</li>
     </ul>
     
     <ul>
           <li><a href="http://bakery.com" class="main_web_site">Visit Web Site</a></li>
     </ul>
     
     <h4></h4>
    </div>
    bla..
         bla…


    Делаю так

    $data = @file_get_contents('http://site.com') or die('Can\'t access source'); 

    if(preg_match_all("#<h2>(.*?)</h2>#is", $data, $matches, PREG_SET_ORDER)) {
    foreach($matches as $match) {
    print $match[0].'<br />';
    }
    }

    if(preg_match_all("#<li class=\"number\">(.*?)</li>#is", $data, $matches, PREG_SET_ORDER)) {
    foreach($matches as $match) {
    print $match[0].'<br />';
    }
    }

    if(preg_match_all("#<p>(.*)</p>#iU", $data, $matches, PREG_SET_ORDER)) {
    foreach($matches as $match) {
    print $match[0].'<br />';
    }
    }


    проблема в том что например теги h2 или тег <p> пристутвует в других местах на странице и между ними содержится не не нужная иформация
    как сделать чтобы искалось только все что содержится между <div class="description"> а потом уже внутри <div class="description"> искать то что будет между h2 и p
  • Lirck

    Сообщения: 1658 Репутация: N Группа: Джедаи

    Spritz 8 мая 2009 г. 14:16, спустя 34 минуты 4 секунды

    isU
    #<li class=\"number\">(.*?)</li>#isU и т.п.
    #.*<div class="description">.*<h2>(.*)</h2>.*<p>(.*)</p>.*<li class="number">(.*)</li>.*</div>.*#isU

    ][yuTa получилась =(
  • Karlovich

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

    Spritz 8 мая 2009 г. 15:42, спустя 1 час 26 минут 3 секунды

    И вправду ][yuTa =)
    Мне с такими параметрами всю страницу выдает на экран
  • ubica

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

    Spritz 8 мая 2009 г. 16:11, спустя 29 минут 37 секунд

    Karlovich, ну дак отладь его
  • Karlovich

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

    Spritz 8 мая 2009 г. 16:14, спустя 3 минуты 1 секунду


    Karlovich, ну дак отладь его

    пытаюсь неполучается :/ подскажи как
  • ubica

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

    Spritz 8 мая 2009 г. 16:33, спустя 18 минут 51 секунду

    для начала
    preg_match('#<div class="description">.*?<h2>(.*?)</h2>.*?<p>(.*?)</p>.*?<li class="number">(.*?)</li>.*?</div>#ism',$content,$matches);
    print_r($matches);

    дальше, надеюсь, допрешь)
  • Karlovich

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

    Spritz 8 мая 2009 г. 16:40, спустя 6 минут 22 секунды


    для начала
    preg_match('#<div class="description">.*?<h2>(.*?)</h2>.*?<p>(.*?)</p>.*?<li class="number">(.*?)</li>.*?</div>#ism',$content,$matches);
    print_r($matches);

    дальше, надеюсь, допрешь)

    спс понял
  • 888eug

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

    Spritz 27 января 2010 г. 14:54, спустя 263 дня 23 часа 13 минут

    используй DOM
  • NRG

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

    Spritz 27 января 2010 г. 15:37, спустя 43 минуты 23 секунды


    используй DOM
    лучше поздно чем никогда ? =)
  • phpdude

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

    Spritz 27 января 2010 г. 16:23, спустя 46 минут 19 секунд



    используй DOM
    лучше поздно чем никогда ? =)
    хы
    Сапожник без сапог

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