10.02.2007

Скрипт парсинга овертюры в глубину и определения конкуренции в Google для каждого кея

Вот тут выкладывал скрипт для парсинга овертюры и гугла вместе.
Вот он собсно, с комментариями:



set_time_limit(0);
$pattern = "|#results\">(.*?).*?(\d{1,3},*\d{0,3},*)|i";


/**
Проверяет вхождение выражения подходящего под паттерн в текс и возвращает
массив ассоциативный таких вхождений, содержащий кей - количество запросов в месяц по овертюре
$source - текст старницы
$pattern - регулярное выражение определяющее фразы
/*
function Parse($source, $pattern) {
if(preg_match_all($pattern, $source, $matches))
{
$i = 0;
foreach ($matches[1] as $link)
{
$res[$link] = $matches[2][$i];
++$i;
}
return $res;
} else {
echo "
". "No pattern matches were found!\r\n" . "
";
}
}

/**
Получает количество страниц в гугле для массива кеев $keys
Возвращает ассоциативный массив кей - количество страниц
*/
function GETGOOGLECOUNT($keys){
for ($i=0; $i
([0-9,]*)", $file, $regs);
$count=str_replace(",", "", $regs[1]);
$res[$i] = $count;
}
return $res;
}

/**
Получает кей ($keyword), делает запрос к заданному сервису, получает до 100 слов(сервис до стольки выдает) с их конкуренцией (сервис иногда выдает ошибку, поэтому сделал пока просто 10 попыток парсинга, вроде хватает), потом по каждому слову узнает количество документов в гугле и все это возвращает массивом [кей] - [количество запросов;конкуренция в гугле] и ждет 20 секунд, чтоб бана гугли не получить.
*/
function PARSEONEWORD($keyword){
global $pattern;
$mkt = "US";
$service = "http://tools.seobook.com/general/keyword/?c=1&keyword=" . $keyword . "&mkt=" . $mkt . "#result";
echo "Reply from server " . $service . " for keyword " . $keyword . "

";
$source = @file_get_contents($service);
$keys_arr = Parse($source, $pattern);
if (sizeof($keys_arr) > 0) {
foreach($keys_arr as $kw=>$kwcount) {
$keys[]=$kw;
}
$g_count=GETGOOGLECOUNT($keys);
sleep(20);
$i = 0;
foreach ($keys_arr as $kw=>$kwcount) {
$result[$kw] = $kwcount.";".$g_count[$i];
$i++;
}
}else{
$result = false;
}
return $result;
}

//Записывает результаты в файл
function WRITERESULTS($fname, $keys) {
$i=0;
$h = fopen($fname, "ab");
foreach($keys as $kw=>$pair){
fwrite($h, $kw.";".$pair."\n");
}
fclose($h);
}

/**
Парсит список кеев из файла $fname, результаты пишет в файл result.txt
*/
function PARSEMANYKEYS($fname) {
$keys = file($fname);
$h = fopen("./result.txt", "w");
fwrite($h, "Keyword;Popularity;Google_Count\r\n");
fclose($h);
foreach ($keys as $k){
for ($i=0;$i<10;$i++){ keys1 ="">
{
print_r($keys1);
WRITERESULTS("./result.txt", $keys1);
break;
} else {
echo "\r\nNo results for " .$k.". Now attempt number " .$i ."\r\n";
}
}
}
}

PARSEMANYKEYS("keys.txt");
?>


Еще иногда перделываю из его себе подо что нужно, что бы разные распарсенныей кеи сохранял в разные файлы, можно убирать парсинг гугли ил уменьшать\увеличивать задержку (sleep(20)). Про задержку может кто в курсе сколько ее ставиь лучше?

Ярлыки: , , , , ,

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

В 10 июля 2008 г. в 18:33 , Blogger Fozzy сказал(а)...

есть еще софтинка - Xedant Human Emulator - даж кое в чем повеселее ...

 

Отправить комментарий

Подпишитесь на каналы Комментарии к сообщению [Atom]

<< Главная страница