Весь день сегодня провел за созданием граббера.
Первый шаг: необходимо обойти сайт по всем внутренним ссылкам и занести все уникальные в базу.
Для этого я использовал cURL+regexp (сам реджексп не помню где именно нашел - но оказался кстати)
// определяем сам реджексп
$regex = '/(<a\s*'; // Start of anchor tag
$regex .= '(.*?)\s*'; // Any attributes or spaces that may or may not exist
$regex .= 'href=[\'"]+?\s*(?P<link>\S+)\s*[\'"]+?'; // Grab the link
$regex .= '\s*(.*?)\s*>\s*'; // Any attributes or spaces that may or may not exist before closing tag
$regex .= '(?P<name>\S+)'; // Grab the name
$regex .= '\s*<\/a>)/i'; // Any number of spaces between the closing anchor tag (case insensitive)
// Инициализируем курл
$ch = curl_init('Тут пишем необходимый URL');
// Задаем параметры для курла
$headers = array('Content-type: text/html; charset=utf-8');
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
// Получаем html
$result = curl_exec($ch);
// закрываем курл
curl_close($ch);
// получаем ссылки
preg_match_all($regex,$result,$matches);
// дальше мы разбираем ссылки, проверяем на уникальность, отбираем только внутренние ссылки, заносим в базу и т.п.
Второй шаг: необходимо вытащить нужные нам данные из вытащенного контента. Для этого я воспользовался наработкой PHP Simple HTML DOM Parser. Очень удобна, но кушает много памяти. У меня с первого раза вылетело из-за недостатка памяти. Для этого я обрезал контент после получения (убрал сайдбары, хедер). В итоге все нормально.
Синтаксис очень схожий с jQuery, по-этому многим будет легко начать.
$html = str_get_html($result);// где результат - это полученный с помощью курла контент
foreach($html->find('div[class=post-header] span') as $element) {
echo $element->innertext.'<br>';
}
Дальше уже дело техники и проработки. Можно совершенствовать под свои потребности сколько угодно, чем я и собираюсь завтра заняться