вопрос про Грабберов

Тема в разделе "PHP", создана пользователем help40, 9 ноя 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. help40

    help40

    Регистр.:
    1 окт 2006
    Сообщения:
    252
    Симпатии:
    26
    ну у меня есть сайт с которого хочу взят все инфо для юзеров
    sait_com/view.php?id=xxxxx

    по сколько я еще не могу написать гараббер , мой вопрос такой

    могу ли я сначала "скопировать" все страници на мой комп и потом извлеч инфо (когда успею сделат граббер) ?
    или думаете это глупая идея ?

    скопировать в смысле:
    0001.html
    0002.html
    .....
    0xxx.html

    будет ли мне труднее потом извлеч инфо или нет ?
    просто как сказать, хочу разделит задача на 2 , сделать снчало то что могу , а потом копаться и думать как извлеч инфо в DB.

    P.S. в раздел видел примерный код для простой граббер какойто , но там кажется слышком простой
    например если у меня есть 5 <div> и мне нужна информация котороя в 3-тый , тогда что делаю , как нахожу его ... еще не ясно. Ранше пробовал тоже с Snoopy.class.php , но тоже не подходит посколько есть скритые данни которые мне нужни ...
     
  2. afonya09

    afonya09

    Регистр.:
    31 янв 2009
    Сообщения:
    260
    Симпатии:
    18
    Коночно можеш!!
    Так даже нужно.
    Личто я сначала скачиваю страницы потом парсю!!!
     
  3. RolCom

    RolCom

    Регистр.:
    12 мар 2008
    Сообщения:
    351
    Симпатии:
    108
    Глупый вопрос. Можешь, если руки из нужного места растут.

    Изучи одну из технологий, XPath или CSS селекторы, или регулярные выражения.
    Я посоветую XPath, т.к. удобен и достаточно мощьный, но если покажется сложновато, начни с CSS селектов.
    В XPath выбрать третий див следующим образом
    Код:
    //div[3]
     
  4. tostrss

    tostrss

    Регистр.:
    16 окт 2007
    Сообщения:
    771
    Симпатии:
    217
    Для парсинга html используй этот скрипт
    http://simplehtmldom.sourceforge.net/
     
  5. VRn00b

    VRn00b Создатель

    Регистр.:
    31 янв 2009
    Сообщения:
    14
    Симпатии:
    1
  6. afonya09

    afonya09

    Регистр.:
    31 янв 2009
    Сообщения:
    260
    Симпатии:
    18
    Смотри в сторону дома.
    Только предварительно сделай все страницы валыдными.
     
  7. help40

    help40

    Регистр.:
    1 окт 2006
    Сообщения:
    252
    Симпатии:
    26
    попробую сделат один комплесный ответ

    Ответ: если честно не понял тебя.

    для другие "могу ли я" это риторический вопрос, а на самом деле правилно ли так сделать

    пожалуйста читай выше, "снупи" не подходит.
    может это у тебя стандартной ответ на слово "граббер", но уви

    пример какойто можно ? я как понял Xpath относится к XML ?(причем здес XML?:(nezn:
     
  8. ZCFD

    ZCFD

    Регистр.:
    16 янв 2008
    Сообщения:
    989
    Симпатии:
    437
    1)
    Видимо имелось ввиду DOM ( объектная модель документа )
    2)
    если документ соответствует стандарту xHTML - то он соответствует стандарту xml -> можно использовать Xpath

    вообще регулярные выражения тебе в помощь

    а скачать файлы можно почти любым Download Manager'ом


    Я в таких случаях качаю wget'ом на шелле, архивирую и уже локально обрабатываю - экономится трафик

    Вопрос в чем? Парсить абсолютно одинаво. Разными будут только части получения содержимого файлов ( не по урл будешь делать file_get_contents() а по имени локально файла ) в остальном разницы нет =)

    На счет целесообразности -- если информация меняется не часто/ парсится один раз с ресурса ( т.е. ты не будешь дерать его раз в день/неделю, а один раз спрарсишь все что надо ) --- вполне.
     
  9. RolCom

    RolCom

    Регистр.:
    12 мар 2008
    Сообщения:
    351
    Симпатии:
    108
    Есть инструменты для парсинга невалидного HTML в дерево, либо преобразования невалидного HTML в валидный XHTML. XHTML является XML. В любом случае ты можешь работать с документом, как с деревом XPath, и выбирать данные. Для PHP из таких инструментов, первое что нашел в гугле Tidy.
     
  10. afonya09

    afonya09

    Регистр.:
    31 янв 2009
    Сообщения:
    260
    Симпатии:
    18
    Tidy приводит хтмл страницу в валидный вид.

    Вот пример как парсил я.

    PHP:
    $rss simplexml_load_file("http://gzt.ru/export/anons/gzt.xml");    
        
    //$rss = simplexml_load_file("gzt.xml");
        //echo "<pre>";
        //print_r($rss);
        //echo "</pre>";
        
    foreach ($rss->channel->item as $item) {
            if (
    $item->description!='') {  
                
    $description description_get_img(quote_smart(iconv('utf-8''windows-1251',$item->description)),date("Ymd",strtotime($item->pubDate)),$suite_url);
                
    pg_query($db"INSERT INTO news(sourse,sourse_txt,category, title, link, description, \"pubDate\") VALUES 
                ('gzt.ru','Газета.Ru','"
    .quote_smart(abx(iconv('utf-8''windows-1251',$item->category)))."',
                '"
    .quote_smart(iconv('utf-8''windows-1251',$item->title))."','".$item->link."',
                '"
    .$description."',
                '"
    .date("Y-m-d H:i:s",strtotime($item->pubDate))."')");
                  
                
    //echo "<h2>". iconv('utf-8', 'windows-1251',$item->title). "</h2>";
                 //echo "<p>". iconv('utf-8', 'windows-1251',$item->link). "</p>";
                  //echo "<p>". iconv('utf-8', 'windows-1251',$item->description). "</p>";
                  //echo "<p>".date("Y-m-d H:i:s",strtotime($item->pubDate)). "</p>";
                  //echo "<p>".iconv('utf-8', 'windows-1251',$item->category). "</p>";
                  //echo "<p>".description_get_img(quote_smart(iconv('utf-8', 'windows-1251',$item->description)),date("Ymd",strtotime($item->pubDate)),$suite_url). "</p><br>";    
                  //enclosure($item);    
            
    }    
        }
     
Статус темы:
Закрыта.