Создаём парсер сайтов

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

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

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

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

Я расскажу лишь то, как спарсить небольшой участок контента, в нашем случае это будет статья с сайта cy-pr, в дальнейшем буду выкладывать свои наработки более профессионального парсера, которым можно будет автоматизировать весь процесс.

Сразу предоставляю исходный код парсера новостей с сайта cy-pr.

Урок по написанию парсера не является для новичков в PHP, описывать всё подробно нет смысла, ведь зная начальные функции, которые вы и так изучите в начале изучения PHP, вы легко сможете прочитать код парсера и понять алгоритм который используется при парсинге страниц.

Для облегчения читабельности кода, все строки прокомментированы.

<?php

  //Настройки парсера

  //URL для парсинга контента

  $url = 'http://www.cy-pr.com/news/2583/';

  

  //Стартовый тег для парсинга контента

  //тег который стоит перед началом нужного участка кода для парсинга

  //и используется 1 раз

  $start = '<div class="l-content">';

  

  //Конечный тег участка кода для парсинга

  //Тег который стоит после нужного участка который будем парсить

  $finish = '<br class="clear"/>';

  

  //Создаём функцию парсера

  function parser($url,$start,$finish) {

  

  //Получаем весь код страницы

  $content = file_get_contents($url);

  

  //Ищем позицию с которой мы будем вырезать код для дальнейшего использования

  $position = strpos($content, $start);

  

  //Вырезаем нужный блок

  $content = substr($content, $position);

  $position = strpos($content, $finish);

  

  //Вырезаем код

  $content = substr($content, 0, $position);

  

  //Вырезаем HTML теги

  //Для добавления\удаления используемых тегов допишите\удалите теги

  $content = strip_tags($content, '<p><a>');

  

  //Debug (Проверка того, что выводит парсер)

  //echo nl2br($content);

  

  //Открываем файл для чтения и перезаписи

  $fp = fopen('article.txt', 'write');

  

  //Записываем код в файл

  fwrite($fp, nl2br($content));

  

  //Закрываем файл

  fclose($fp);

  

  //Возвращаем напарсеный контент

  return $content;

  }


 //Вызываем функцию парсинга

  parser($url, $start, $finish); 

?>

После чего у вас в корневой папке используемого скрипта создастся файл article.txt, в котором будет код напарсеной статьи.

Поделитесь ссылкой если мы вам помогли!

Читайте также:

Влияние внутренних факторов сайта на раскрутку

Какой хостинг лучше выбрать

Замена изображения при наведении

Действие по времени с помощью PHP

Переменные в javascript

Комментарии:

Добавленно - 2011-03-15

atom пишет:

Спасибо за парсер сайта, но по одной странице парсить сайт очень долго, сделайте урок по созданию парсера всего сайта :) И еще, лучше в качестве базы для парсера использовать mysql, а не txt, быстрее и надёжнее.

Добавленно - 2011-03-15

Guru пишет:

Слишком простой парсер, но для ознакомления с основами и алгоритмом парсинга пойдёт.
Для себя узнал про nl2br, сам недогадался прогонять текст через эту функцию, теперь проблем с переносом строк нет. Спасибо.

Добавленно - 2011-03-31

Goodd пишет:

Парсинг сайтов - это немного не то, что вы описали, этот скрипт является граббером 1 страницы сайта. Хотя переделать не трудно для полноценного парсера сайта.

Добавленно - 2011-04-01

Reed пишет:

Подскажите где можно скачать бесплатный рабочий парсер сайтов?
Этот слишком простой... Мне нужен парсер который парсит сайт целиком

Добавленно - 2011-04-21

Паря пишет:

Goodd,
Парсинг сайтов представляет собой быстрое копирование информации к себе на сайт с помощью парсера написанного на php.
Спасибо за парсер, урок достойный, жду продолжения с уже более полными функциями парсера.

Добавленно - 2011-07-15

Bill пишет:

Парсер - один из компонентов грабера. Не надо путать мягкое с приятным :)

Добавленно - 2011-09-13

Fajerus пишет:

Bill, граббер полностью скачивает заданную информацию на ваш сайт, а граббер просто получает с того ресурса нужную информацию

Добавленно - 2012-05-10

Роки пишет:

Один вопрос, где я косячу, что при строке "$content = substr($content,0,$position); " у меня выдаёт пустой экран, а при замене её на "$content = substr($content,$position);" - выдаёт результат. Только, не до нужного места, а до конца.

Добавленно - 2012-10-29

тома пишет:

запустила данный парсер, выдаёт пустой txt файл, что не так и как и справить.. мне нужен именно такой простой парсер для ознакомления, но он почему то не работает .. ..

Добавленно - 2013-01-13

Андрей пишет:

Прикиньте, полтора часа промучился, не мог понять почему не работает, а оказалось банально, кодировки не совпадают. Люди будьте внимательны. Спасибо за скрипт и подробные комментарии.

Добавленно - 2014-05-15

Сергей пишет:

Автор все прекрасно написал, но извините за банальность - как запустить этот скрипт? Куда его совать, где кнопка то? И вот еще недоразумение "Текст должен быть не менее 100 и не более 2000 символов!" Это с какой целью?

Добавленно - 2015-10-12

Алексей пишет:

А как заставить ваш скрипт работать? Я хочу получать уведомления на почту об изменении курса на сайте ВТБ24. На сколько сложно это сделать с помощью вашего скрипта и много ли нужно еще допилить в нем?

Добавить комментарий:

Минимум 100 символов.
Модераторы detected!

Вы ввели сообщение длиной символов

Три + Пять ? =