Скачать и распарсить страницу

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

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

    Raccoon

    Регистр.:
    31 июл 2007
    Сообщения:
    172
    Симпатии:
    9
    Добрый день.
    Подскажите с помощью каких функций можно решить следующую задачу:

    1. Скачать страницу.
    2. Вытащить содержимое тэгов title, meta, desc.
    3. Определить наиболее часто встречаемые слова.
    4. Сравнить всё это с таблицей заданных слов.

    Спасибо.
     
  2. ZCFD

    ZCFD

    Регистр.:
    16 янв 2008
    Сообщения:
    989
    Симпатии:
    437
    1) file(), file_get_contents(), fopen(), curl... , sokets ...
    2) regexp... , str_pos()
    3 и 4) работа с массивами

    Поиск по форуму даст тебе примеры скриптом и аналогичные темы
     
  3. капрал

    капрал

    Регистр.:
    2 окт 2008
    Сообщения:
    337
    Симпатии:
    45
    Код:
    $data = file_get_contents('http://google.com');
    
    Код:
    preg_match("/<title>([^<]*?)</title>/i",$data,$match);
    
    
     
    abcolut нравится это.
  4. _axl

    _axl Постоялец

    Регистр.:
    24 сен 2008
    Сообщения:
    50
    Симпатии:
    8
    для облегчения работы с html-dom посоветовать вот такую библиотеку:
    http://simplehtmldom.sourceforge.net/
    сам когда-то очень быстро написал парсер на ней
     
    Raccoon и Zogr нравится это.
  5. Raccoon

    Raccoon

    Регистр.:
    31 июл 2007
    Сообщения:
    172
    Симпатии:
    9
    Скачал, вроде всё понятно, буду пробовать.

    Такие вопросы остались:

    1. Не будет ли килятся процесс, по которому парсер будет обходить к примеру 1000 сайтов? Как контролировать нагрузку?

    2. По пунктам 3 и 4. Объясню зачем мне это нужно. Нужно для модерации, заграбленный контент надо сохранить в определенной категории.

    Получается схема работы следующая:
    Я парсю страницы, выдираю ключевые слова и наполняю ими массив А. В массиве Б есть ключевики, которые соответствуют определенной категории.

    Я начинаю сравнивать по одному элементу массива А с элементом массива Б, и если процент совпадений больше N, то принимается решение записать контент в категорию.

    Верно?
     
  6. Sanuch

    Sanuch

    Регистр.:
    25 май 2009
    Сообщения:
    207
    Симпатии:
    70
    не пытайтесь обойти все 1000 сайтов за раз, запускайте процесс для меньшего количества, к примеру кадждые 5 минут запускается процесс для 50 сайтов
     
  7. Raccoon

    Raccoon

    Регистр.:
    31 июл 2007
    Сообщения:
    172
    Симпатии:
    9
    Спасибо за совет. Т.е. лучше делать, чтобы скрипт по малу, но регулярно парсил.
     
  8. Sanuch

    Sanuch

    Регистр.:
    25 май 2009
    Сообщения:
    207
    Симпатии:
    70
    да, как вариант получать список сайтов из базы, для этого списка проставлять статус "в обработке", на случай если в к следующенму запуску скрипта сайты еще не будут обработаны, а скрипт работал с последующими, по окончанию обработки сайта обнулять статус и проставлять время, чтобы одини и тежи сайты не обрабатывались по 10 раз за день.
     
  9. afonya09

    afonya09

    Регистр.:
    31 янв 2009
    Сообщения:
    260
    Симпатии:
    18
    Лучшем вариантом сдесь будет два поля.
    статус 0 не в работе 1 в рвботе.
    date-last-job это время последнего парсинга. после кпждого парсинга обновляй на текущие время. Когда начинаеш парсить сайт ставь статус один по завершению ноль.
    При запуске проверяй на статус ноль и дата последней работы меньше текущей скажем на 30 минут. Делаеш пять десять потоков программы и будет тебе счастье.
    С проксей лучше не делай будут глюки задержки итп..
    Многие сайты а точнее 99% тебя не забанят.
    Если делать проксю то только на тех кто тебч забанил. Сыкономиш много времени и нервов.
     
Статус темы:
Закрыта.