1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.

Парсинг сайта через PHP

Тема в разделе "PHP", создана пользователем alcatraz, 11 мар 2013.

Статус темы:
Закрыта.
  1. TopicStarter Overlay
    alcatraz

    alcatraz BANNED

    Регистрация:
    04.01.13
    Сообщения:
    1.004
    Симпатии:
    401
    Баллы:
    375
    Пол:
    Мужской
    Добрый день мои друзья, сейчас я Вам попытаюсь объяснить что такое парсниг. Все таки что я подразумеваю под словом парснг - это синтаксический анализ текста, т.е. преобразование его в некоторую структуру данных, с которой работать нам будет просто и легко. Иными словами скажем, на вход подаём страницу результатов из гугла а на выходе (после процесса парсинга) мы получаем массив в виде пунктов результатов поиска, где поэлементо будет расписано: урл, заголовок сайта, различная информация и т.д. Ещё один пример. Запускаем скрипт парсить полностью какой-либо сайт - он выдирает из него все статьи, после чего мы можем разместить их у себя с собственным дизайном. Плохо это или хорошо, вопрос не для обсуждения в данной теме. Зато после прочтения темы - Вы узнаете как народ может парсить Ваши сайты.
    Итак, мы имеем к примеру вот такую страницу:
    Код:
    <html>
    <head><title>заголовок</title></head>
    <body>
    здесь некоторый текст, меню и т.д.
     
    <p>
    <h1>заголовок статьи</h1>
    здесь располагается
    некоторая статья
    </p>
     
    продажные ссылки и т.д. что не должно войти в наш "срез"
    </body>
    </html>
    и нам нужно выдернуть текст который между тегами <p></p>
    под такой html код мы пишем следующий php код
    Код:
    $matchesArr = array();
    preg_match_all( '|<p>(.*)</p>|sUS', $str, $matchesArr );
    print_r( $matchesArr );
    и так что же мы видим в этом коде:
    ----

    Модификатор “s” - указывает нам на то, чтобы символ “.” включал в себя перевод строки. По умолчанию не включает.
    Модификатор “U” - включает “жадность” квантификаторов. По умолчанию, опять же, они “не жадны”.
    Модификатор “S” включён, так скать, на вырост
    ----

    На самом деле, видоизменяя эту единственную строчку кода (preg_match_all) можно добиться парсинга 97% статей (если они там вообще есть). Если мы хотим распарсить на странице кучу анекдотов - этот код также справиться и с этой ситуацией. Всё гораздо проще, чем Вам кажется! Проще! Теперь представим, что мы скачали некоторый сайт, положили его в виде HTML файлов в некоторой директории my_site. Посмотрим как можно обойти все эти файлы и выкачать с них всю нужную информацию.
    Пример обхода всех файлов в директории my_site:
    Код:
    $myDir = 'my_site';
    $d = dir( $myDir );
    $matchesArr = array();
    while( false !== ( $fileName = $d->read() ) ){
    if( ( $fileName != '.' ) && ( $fileName != '..' ) ) {
    $str = file_get_contents( $myDir . '/' . $fileName );
    preg_match_all( '|<p>(.*)</p>|sUS', $str, $matchesArr );
    // обрабатываем полученную информацию в $matchesArr
    }
    }
    $d->close();
    ВСЕ!!!!
    cerber нравится это.
  2. stimul-tem

    stimul-tem Пользователь

    Регистрация:
    30.09.11
    Сообщения:
    37
    Симпатии:
    31
    Баллы:
    55
    ICQ:
    7337542
    Старая статья 2008 года,щас уж наверно на сайтах защита от таких парсингов..
  3. TopicStarter Overlay
    alcatraz

    alcatraz BANNED

    Регистрация:
    04.01.13
    Сообщения:
    1.004
    Симпатии:
    401
    Баллы:
    375
    Пол:
    Мужской
    ну чтобы к примеру какое нить анекдот или цитату спарсить то норм...а если php норм знаешь...то можно и целый mail.ru спарсить таким способом, да в общем так и парсят...самое главное логику включить!
  4. Diplomat

    Diplomat VIP пользователь

    Регистрация:
    05.12.12
    Сообщения:
    821
    Симпатии:
    95
    Баллы:
    275
    Пол:
    Мужской
    Род занятий:
    Программист JAVA
    Адрес:
    Бузулук
    Windows Live:
    maxidiplomat@hormail.com
    ICQ:
    236968
    Skype:
    maxidiplomat
    А через Java как?
Статус темы:
Закрыта.

Поделиться этой страницей