Добрый день, сегодня я хотел бы рассказать как парсить сайты. Самым простым сайтом для этого дела является Баш орг.  Итак начнем ..Парсер сайта bash.im (bash.org.ru)

Для начала создаем базу данных для хранения всех цитат.

 

В базе данных создаем поля:

id с авто инкрементом и не нулевое и Primary key

quote_id — id цитаты на сайте(баше)

quote_text — текст самой цитаты

На этом с базой данных все. Далее переходим непосредсвенно к самому скрипту

 

Создаем константы с хоста, имени базы данных, логина и пароля от нее. И подключаемся к базе.

 

В этих строчках мы через file_get_contents открываем сайт баш. Далее через регулярное выражение находим количество страниц на сайте и сохраняем в переменную.

 

В этой строчке мы начинам цикл в котором обрабатываем каждую страницу сайта начиная с самой первой(последнеей)

 

В этом скрипте открывается каждая страница сайта, в ней через explode разделяем все цитаты. Разделение идет через поиск на странице <span class=»date»>. Полученный массив мы прогоняем через цикл в через регулярные выражения находим id цитаты, и текст цитаты.

Осталось все это сохранить в базу данных

 

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

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

В последней строчке где мы сохраняем в базу данных надо сделать следующие изменения. Удаляем ее и вставляем следующий код

 

Получается что вначале идет проверка на существование цитаты( а точнее id) в базе а потом только сохранение если ее нету.

НУ и наконец, цитаты на сайте появляются ежедневно и чтобы заново каждый раз сайт не проверять сделаем только последние 5 страниц(вы можете сделать и больше)

Для этого меняем цикл 

 

На этот