Първо благодаря на Мариан Игнев за помоща в http://fridaycode.net, за скрапването на referring url-тата от tyxo-то.
Знаете, че tyxo-то показва последните 100 ключови фрази по които е получил посещения даден сайт и това може да се види ако е отворена статистиката му. От тази статия ще разберете как да ги събирате в база данни и да се доберете до много повече от последните 100 !
С помоща на скрипта от тази статия : Как лесно да вземаме съдържание от сайтове тези последни 100 ключови фрази могат да се вземат много лесно в статията е обяснено как, като има и два файла конкретно за tyxo (tyxo_parser.php и tyxo.php), които малко трябва да се променят, за да взема referring url-то, а не отделната ключова фраза, която в tyxo са я ограничили до 32 символа и понякога се накъсва.
Модифицирания скрипт можете да изтеглите от тук : Sportni_parser.zip (14,6 KB)
Примерени резултати след събирането на данните за sportni.bg можете да видите тук : Ключови думи/фрази Sportni.bg
От тук надолу статията обеснява какви промени трябва да се направят в скриптa от fridaycode.net. Целта е да се види, кое за какво служи.
За да вземете referring url пръво трябва да сте си издърпали пакета от горната статия и след това да редакатирате файла tyxo_parser.php, като към последните редове има :
$keywords_arr[$key]['text']
Където вместо ‘text’ трябва да се замени с ‘href’ или да изглежда така :
$keywords_arr[$key]['href']
След това в другия файл (tyxo.php) добавяте една функция, която да връща само търсената дума/фраза от referring url-то на google :
function keyword ($string) {
if (strpos($string, 'google')) {
// Премахване на всичко преди &q=
$tmp = substr($string, strpos($string, 'q='));
// Премахване на q=
$tmp = substr($tmp, 2);
// Премахване на всички след следващия §
if (strpos($tmp, '&')) {
$tmp = substr($tmp, 0,strpos($tmp, '&'));
}
// Вуаля
return urldecode($tmp);
}
}
И след това, отново в tyxo.php, за да включите горната функция правите следното, намирате към края :
$html .= ' | ' . cp1251_to_utf8( $row['keyword'] );
Зааменяте го с :
$html .= ' | ' . keyword(cp1251_to_utf8( $row['keyword'] ));
Вече имате пълната ключова дума/фраза, по която е намерен дадения сайт. С допълнителната информация, с която разполагате за ip адрес и дата/час на посещението, можете да си направите таблица, която да съдържа цялата тази информация.
Ето груб вариант как би могла да изглежда таблицата в базата данни :
CREATE TABLE IF NOT EXISTS `skolev` ( `ip` varchar(20) NOT NULL, `keyword` varchar(255) character set utf8 NOT NULL, `date` varchar(50) character set utf8 NOT NULL, ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
Ето и как би могла да изглежда заявката за записване на ключовите фрази в горната таблица :
$sql = "INSERT INTO `scraping`.`skolev` (`ip`, `keyword`, `date`) VALUES ('".addslashes($row['ip'])."',
'".addslashes(keyword(cp1251_to_utf8( $row['keyword'] )))."', '".addslashes(cp1251_to_utf8( $row['date'] ))."' );";
mysql_query($sql);
Хубаво е като приключим с добавянето на новите записи, да проверим дали информацията не се дублира и ако е така да я изтрием. Ето варианта, който аз съм използвал, за да избегна дублирането :
$select = "SELECT * FROM `skolev` ORDER BY `skolev`.`ip` ASC , `skolev`.`keyword` ASC";
$res_select = mysql_query($select);
$num_res_select = mysql_num_rows($res_select);
for ($i=0; $i <$num_res_select; $i++)
{
$s=$i+1;
$row = mysql_fetch_array($res_select);
$ip[$i] = stripslashes($row['ip']);
$keyword[$i] = stripslashes($row['keyword']);
$date[$i] = stripslashes($row['date']);
$ip[$s] = stripslashes($row['ip']);
$keyword[$s] = stripslashes($row['keyword']);
$date[$s] = stripslashes($row['date']);
}
for ($l=0;$l<$num_res_select;$l++) {
$s = $l + 1;
if ($ip[$l] == $ip[$s] && $keyword[$l] == $keyword[$s] && $date[$l] == $date[$s]) {
$delete = "DELETE FROM `scraping`.`skolev` WHERE `skolev`.`ip` == '".$ip[$s]."' AND `skolev`.`keyword` = '".$keyword[$s]."' AND `skolev`.`date` = '".$date[$s]."' LIMIT 1;";
mysql_query($delete);
}
}
За всичко това може да се пусне една cron задача, да се изпълнява на определен период в зависимост колко посещаван е сайта.
За хората постарали се да прегледат цялата статия добавям и една фунцкия на коя позиция е бил сайта преди да се цъкне за съответната фраза т.е. ако сте търсили примерно трохички в google и сте цъканли на втория резултат, тази информация присъства в referring url-то в част от случаите (по първоначални наблюдения за някои сайтове достига до 40 % от случаите). Фунцкия се използва по същия начин както и горната функцията за ключова дума :
function position($string) {
$string = strtolower($string);
if (strpos($string, 'google')) {
// Delete all before &cd=
$tmp = substr($string, strpos($string, 'cd='));
// Remove cd=
$tmp = substr($tmp, 3);
// Remove everything after the next &
if (strpos($tmp, '&')) {
$tmp = substr($tmp, 0,strpos($tmp, '&'));
}
// we have the results.
if (strlen($tmp) < 4)
return urldecode($tmp);
}
}
Проблема тук е, че ако има резултати от картинки/видео или е щракнато на платен резулат в броенето на позицията се включват и те.
След като вече имате всички ключови фрази/думи на конкурентния сайт в собствена база данни сами решавате какво точно да правите с тях и как да ги организирате.
С помоща на същия метод можете да извлечете и от кои сайтове конкурента ви получава най-много посещения, да следите лидерите в дадена ниша, а с малко желание и да разберете как върви adwords кампанията на някой конкурент, но това може да го опиша в някоя друга статия понеже тази стана достатъчно дълга …
Браво
Полезна статия. Не съм пробвал скрипта, но възнамерявам да го направя.
Ох, много полезно, но още ли има хора, които използват Tyxo ?
А ти кой тул използваш за събиране на ключови думи (на български по-специално) ?
Поздравления за статията !
Пенко мерси за коментара, нищо няма да ти коства да го пробваш, ще се увериш, че е полезен.
Павел – ползват ползват и още как. Мен ми трябваше конкретно за една ниша и се оказа, че водещите 5 сайта в нея имат отворени статистики и вече се чудя как да разбия таблиците, че някой станаха с по 60 000 записа
Борис – тази статия е за ключови думи на български, adwors и той дава доста полезна информация, ръчното събиране и анализиране на сайтове върши част от работата, всякакви отворени статистики са добре дошли и в общи линии това са вариантите …
Вал мерси
Аз ползвам нещо подобно като идея за „крадене“ на тагове, но идеята ми скри шапката. Евала.!
Чудесно, благодаря за статията, …наистина интересно