Есть вопрос по парсингу текста с помощью Php

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

Модераторы: latteo
  1. асс

    асс

    Регистр.:
    13 окт 2006
    Сообщения:
    749
    Симпатии:
    220
    Добрый вечер, подскажите пожалуйста.
    Можно ли регулярками выдрать текст на странице.
    Допустим подсчитать количество русских букв в тексте определить самый большой кусок и вырезать его.


    Наример стили скрипты фреймы можно вырезать с помощью
    регулярок.
    PHP:
     $textpreg_replace('/<object(.*?)<\/object>/is',""$text);
    Буду очень признателен за идеи или примеры.

    ТОесть интересует работа без привязки в дизайну и тегам.

    Вырезать регуляркой с привязкой к шаблонам нет сложностей,

    например

    PHP:
    preg_match('/<img src=\"(.*?)\" title=\"(.*?)\" alt=\"\" \/><strong>(.*?)<\/strong><\/div><p>(.*?)<\/p><p>(.*?)<\/p><p>(.*?)<\/p><\/div><ul class=\"b-tabs\"><li class=\"b-tabs__item b-tabs__active\">(.*?)<\/li><li class=\"b-tabs__item\">/si'$result$find);


    а вот как выдрать не привязываясь к дизайну.
     
  2. SergXP

    SergXP Постоялец

    Регистр.:
    8 мар 2008
    Сообщения:
    66
    Симпатии:
    11
    насчет регулярок, не могу сказать) не люблю я их))))

    возможно XPath Вам поможет.
    Установите расширения FireBug и FirePath на FireFox'е ))
    Поможет удобно генерировать запросы и быстро разбираться.
     
  3. jami

    jami Постоялец

    Регистр.:
    10 авг 2011
    Сообщения:
    114
    Симпатии:
    39
    Задача слишком туманно сформулирована. Чтобы "выдрать текст не привязываясь к тегам" - в простейшем случае, можно обойтись конфиг-файлом, где ты сам задаешь вид шаблона тегов для регулярки, либо пишешь самообучающуюся систему с элементами ИИ, которая по известным тебе критериям - определяет, что именно нужно вырезать на странице итд. Обычно парсер пишется для Н конкретных сайтов, и особенности их исходного HTML-кода зашиваются куда-нить в конфиг, писать типа-ИИ-парсер - себе дороже ;)
     
  4. асс

    асс

    Регистр.:
    13 окт 2006
    Сообщения:
    749
    Симпатии:
    220

    Да это понятно, хотя мне кажется регуляркой можно составить осную часть работы.

    Ведь есть же универсальные парсеры по ключевым словам например.
    Вот и яхочу сделать подобное.
     
  5. zzallexx

    zzallexx

    Регистр.:
    11 июн 2008
    Сообщения:
    1.036
    Симпатии:
    699
    принцип примерно такой весь текст страницы разбиваем на td или на div и дальше анализ полученных блоков на количество текста и на количество ссылок в этом тексте ну и тд и тп
     
  6. o_nix

    o_nix

    Регистр.:
    7 ноя 2007
    Сообщения:
    1.073
    Симпатии:
    1.037
    либа специальная продавалась с пару лет назад
    разраб говорил что 100% эффект, продавалась за сумму что то около 100$ (в исходнике)
    http://jeck.ru/universal-content-pasrser-sellin/

    тест либы
    http://4iz.ru/contentparser/

    я не проч на такое скинуться
     
  7. асс

    асс

    Регистр.:
    13 окт 2006
    Сообщения:
    749
    Симпатии:
    220

    Вы забейте урл
    http://www.vesti.ru/doc.html?id=637903&cid=680 или http://domchel.ru/renovation/457740.html

    Хотя на 90% справляется со своей задачей.

    Дак давайте купим, это же готовый автомат для наполнения сайтов.
    Правда мусор все же тянет.
     
  8. o_nix

    o_nix

    Регистр.:
    7 ноя 2007
    Сообщения:
    1.073
    Симпатии:
    1.037
    первый явно отсеивается по количеству линков в тексте, учитывая новую моду к внутренней перелинковке на толстых ресурсах - это проблема.
    ясное дело что универсального решения хрен найдёш, но как конструктор для доработки я бы взял.

    не хочу быть организатором складчины, буду рад если тему кто то другой создаст.

    думаю на 3+ человек уже можно взять

    либа то известная, наверняка у кого то на нулледе есть ...
    мож кто поделится ?? :)
     
  9. zzallexx

    zzallexx

    Регистр.:
    11 июн 2008
    Сообщения:
    1.036
    Симпатии:
    699
  10. KillDead

    KillDead

    Регистр.:
    11 авг 2006
    Сообщения:
    883
    Симпатии:
    540
    В некотором роде тема известная и довольно давно появилась. Генератор дорвеев был с таким вот модулем. Как то ...бабло называлось. Как уже сказали, основная идея - Мы находим слой в котором больше всего контента. Лучше\легче всего использовать dom парсер. Он знает о структуре документа. с учётом некоторых ньюансов, типа - нужно отбросить комментарии, их ведь может быть намного больше чем самого контента, контент может иметь не простейшую структуру типа <p>..</p> а ещё и таблицы и тп...

    Особо не копал в этом направлении, но так и не смог придумать как расширить функционал этого метода, безшаблонного парсинга. А пока (как мне кажется, человеку который не клепает доры и ничего о них не знает) возможности скромные- можно парсить только типа новостников, форум\магаз\геллерею получить не получится нормально. + мусор. Либо нужно делать админку и валидацию проводить каждого сайта.

    + недавно человек писал о похожем скрипте: мол есть парсер, может утащить весь контент с любого сайта с сохранением структуры. Т.е можно без проблем вытащить и в любую цмс и не будет заметно что копипаст сделан на автомате. хотя я так и не понял - он его видел в работе или просто мечтал о нём