Простой парсер google trends

March 14, 2008

Вот кусочек из моего php скрипта, который парсит гугл трендс

//Trends Parsing
$trends_url = ‘http://www.google.com/trends/hottrends/atom/hourly‘;
$trends = file_get_contents($trends_url);
$trends = html_entity_decode(htmlentities($trends, ENT_COMPAT, ‘UTF-8′));
preg_match_all("/<a href=\"[^>]*>(.*?)<\/a>/is", $trends, $kw, PREG_PATTERN_ORDER);

На выходе получаем массив $kw, с которым уже можно что-нить химичить. У меня, например эти тренды идут дальше на парсинг контента по соответствующим кейвордам из google blog search, technorati, сниппеты google и msn и из них потом формируется пост в блог.

Например, парсим сниппеты гугла таким образом:

//Google Serps Parsing
$google_request = ‘http://www.google.com/ie?hl=en&num=‘.$count.’&
start=0&lr=&q=’.urlencode(trim($kw[$j]));
$google_pattern = ‘/<a title="(.*)" href=(.*)>(.*)<\/a>/isU’;
$google_result = file_get_contents($google_request);
$google_result = html_entity_decode(htmlentities($google_result, ENT_QUOTES, ‘UTF-8′));
$google_result = str_replace("’", "’", $google_result);
$google_result = str_replace(" …", ".", $google_result);
$google_result = str_replace("…", ".", $google_result);
$google_result = str_replace(" | ", ", ", $google_result);
$google_result = str_replace("’", "’", $google_result);
$google_result = str_replace("#39;", "’", $google_result);
$google_result = str_replace("·", "", $google_result);
$google_result = str_replace("&", "and", $google_result);
$google_result = str_replace("amp;", "", $google_result);
$google_result = str_replace("middot;", "", $google_result);
$google_result = str_replace(""", "’", $google_result);
preg_match_all ($google_pattern, $google_result, $google_data);
$google_header = implode(". ", $google_data[3]);
$google_snippet = implode(" ", $google_data[1]);

Сниппеты Live/MSN вот так

//MSN Serps Parsing
$msn_url = ‘http://search.msn.com/results.aspx?format=rss&count=‘.$count.’&
q=’.urlencode(trim($kw[$j]));
$msn_request = file_get_contents($msn_url);
$msn_request = html_entity_decode(htmlentities($msn_request, ENT_QUOTES, ‘UTF-8′));
$msn_request = str_replace(" …", " ", $msn_request);
$msn_request = str_replace("Live Search: ", "", $msn_request);
$msn_request = str_replace("#39;", "’", $msn_request);
$msn_request = str_replace("·", "", $msn_request);
$msn_request = str_replace("&", "and", $msn_request);
$msn_request = str_replace("amp;", "", $msn_request);
$msn_request = str_replace("middot;", "", $msn_request);
$msn_request = str_replace(""", "’", $msn_request);
preg_match_all("/<title[^>]*>(.*?)<\/title>/is", $msn_request, $msn_title, PREG_PATTERN_ORDER);
preg_match_all("/<description[^>]*>(.*?)<\/description>/is", $msn_request, $msn_desc, PREG_PATTERN_ORDER);
$msn_header = implode(". ", $msn_title[1]);
$msn_snippet = implode("
", $msn_desc[1]);

В итоге получим тексты сниппетов гугла/мсн и заголовки из выдачи, немного очищенные от мусора. Реализация возможно не фонтан, но все же рабочая.
Посидев с php учебником день-два можно наваять неплохой сборщик контента по трендсам :)

Если очень лениво, пишите в каменты может выложу готовый скрипт.

———————–

Скрипт, который парсит google trends + тексты из сниппетов и выводит все это на страницу

Говномешалка

January 10, 2008

PHP скрипт, разбивающий текст нужным процентом кейворда.

define(’NEED_DENSITY’,20);

$key = "XANAX";
$body = "text about viagra here text about viagra here text about viagra here text about viagra here ";
$needDens = NEED_DENSITY;

$addKeysCnt =
($needDens/100)*(str_word_count($body)/str_word_count($key));
$arWords2 = explode(’ ‘,$body);
for($j=0;$j<$addKeysCnt;$j++) {
$arWords2[] = $key;
shuffle($arWords2);
}

$body = implode(’ ‘,$arWords2);

echo $body;

Простой генератор текстов, Гугл + Марков

August 11, 2007
<?
/*********************************

Text Generator v 0.00002
Сделал nevitas.
ICQ 212928653.
Сначала парсит и скачивает первую десятку гугла,
потом на ее основе генерит
нужное кол-во страниц цепями Маркова.

Пример использования - example.php.

Удачной генерации.
*********************************

/
Error_Reporting(E_ALL & ~E_NOTICE);
class textGenerator
{

/*********************************

Эта функция отвечает за закачку заданного списка
URL с веба. Можете ее править по своим нуждам
(делать через неблокирующие сокеты, если cURL на сервере нет, например)
*********************************

/
function download($urllist)
{
$mh = curl_multi_init();

foreach ($urllist as $i => $url)
{
$conn[$i]=curl_init($url);
curl_setopt($conn[$i],CURLOPT_RETURNTRANSFER,1);
curl_setopt($conn[$i],CURLOPT_FOLLOWLOCATION,1);
curl_setopt($conn[$i],CURLOPT_MAXREDIRS,2);
curl_setopt($conn[$i],CURLOPT_CONNECTTIMEOUT,10);
curl_setopt($conn[$i],CURLOPT_HEADER,0);
curl_multi_add_handle ($mh,$conn[$i]);
}

do
{
$n = curl_multi_exec($mh,$active);
}
while ($active);

foreach ($urllist as $i => $url)
{
$con = curl_multi_getcontent($conn[$i]);
$res[$i]= $con;
// file_put_contents("debug/$i.html",$con);
curl_multi_remove_handle($mh,$conn[$i]);
curl_close($conn[$i]);
}
curl_multi_close($mh);
   return $res;
}

/*********************************

Эта функция парсит URL с первой страницы гугла по данном запросу.
И качает их функцией download.
*********************************

/
function parse_texts($q)
{
$q = urlencode($q);
$q = ‘http://www.google.com/search?q=‘.$q;
$goo = file_get_contents($q);
$regexp = ‘/<a href=\"?([^\s\"]+)\"? class=l>/’;
preg_match_all($regexp,$goo,$res);
$urllist = array();
for ($i = 0; $i<count($res[1]); $i++)
{
$urllist[] = $res[1][$i];
}

$ar = $this->download($urllist);
// var_dump($urllist);
return $this->clear_up_texts($ar);
}

/*********************************

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

/

function clear_up_texts($texts)
{
$tags = array(’A', ‘ABBR’, ‘ACRONYM’, ‘ADDRESS’, ‘AREA’, ‘B’, ‘BDO’, ‘BIG’, ‘BLOCKQUOTE’, ‘BR’, ‘CITE’, ‘CODE’, ‘DEL’, ‘DFN’, ‘EM’, ‘EMBED’, ‘H1′, ‘H2′, ‘H3′, ‘H4′, ‘H5′, ‘H6′, ‘HR’, ‘I’, ‘IMG’, ‘INS’, ‘LI’, ‘MAP’, ‘MARQUEE’, ‘OL’, ‘P’, ‘PRE’, ‘Q’, ‘SAMP’, ‘SMALL’, ‘SPAN’, ‘STRONG’, ‘FONT’, ‘SUB’, ‘SUP’, ‘UL’, ‘VAR’, ‘TT’);

$res = array();
foreach ($texts as $con)
{
$con = html_entity_decode($con);
foreach ($tags as $tag)
{
$regexp = "/<\/?".$tag."[^>]*>/i";
$con = preg_replace($regexp,"",$con);
}
$regexp = "/<head.+<\/head>/i";
$con = preg_replace($regexp,"",$con);
$regexp = "/<script[^<]+<\/script>/i";
$con = preg_replace($regexp,"",$con);
$regexp = "/<style[^<]+<\/style>/i";
$con = preg_replace($regexp,"",$con);
$regexp = "/\s+/";
$con = preg_replace($regexp," ",$con);
$con = strtolower($con);
$res[] = $con;
}
return $res;
}

/*********************************

Эта функция собственно генерить тексты из массива исходных текстов.
*********************************

/

function generate($data, $words_co,$pages_co)
{
$result = array();
$content = "";

foreach ($data as $con)
{
$regexp = "/<[^>]+>/";
$res = preg_split($regexp,$con);
$m = 0;
foreach ($res as $kusok)
{
if (strlen($kusok)>$m)
{
$m = strlen($kusok);
$ms1 = $kusok;
}
}
$m = 0;
foreach ($res as $kusok)
{
if ((strlen($kusok)>$m)&&($kusok!=$ms1))
{
$m = strlen($kusok);
$ms2 = $kusok;
}
}
$itog = strtolower("$ms1 $ms2");
$content.="$itog ";
}
$regexp = "/[^a-z0-9]+/";
$content = preg_replace($regexp," ",$content);
$regexp = "/\s+/";
$temp = preg_split($regexp,$content);
$words = array();
for ($i = 0; $i<count($temp)-1; $i++)
{
if (!$words[$temp[$i]]) $words[$temp[$i]] = array();
$words[$temp[$i]][] = $temp[$i+1];
}

for ($i = 0; $i<$pages_co; $i++)
{
$r = rand(0,count($temp));
$w = $temp[$r];
$con = "";
for ($j = 0; $j<$words_co; $j++)
{
$r = rand(0,count($words[$w])-1);
$word = $words[$w][$r];
$w = $word;
$capit = false;
$r = rand(0,1000);
if (($r>100)&&($r<180)) $capit = true;
if ($capit)
{
$con.=".";
$word[0] = strtoupper($word[0]);
}
$con.=" $word";
}
$result[] = $con;
}
return $result;
}

}

?>

 
 
 
 И пример использования:
 /*********************************
Text Generator v 0.00002
Сделал nevitas.
ICQ 212928653.

Файл - пример использования.
Использование: вызываете из своего скрипта функцию
$gen->generate(запрос_в_гугл,количество_слов_на_страницу,количество_страниц_необходимых);
Например:
$gen->generate("windows articles",300,5);
И эта функция возвращается массив с текстами нужной длины.
   Предварительно надо создать, естественно, объект $gen:
   $gen = new textGenerator();

Т.о. пример вернет массив из 5-ти элементов по 300 слов в каждом элементе.
*********************************

/

include(’textgenerator.class.php’);
$gen = new textGenerator();
$data = $gen->parse_texts("windows article");
$texts = $gen->generate($data,500,5);

foreach ($texts as $text)
{
echo $text;
echo "<br><hr><br>";
}

 
 
 http://www.umaxforum.com/topic/3/23092/

Text generator

June 6, 2006

Онлайн синонимайзеры 

http://www.spinnertool.com/

http://www.turnkeyhero.com/replacer_tester.php

——————————— 

Lorem Ipsum Generator
Scrambled Text Generator - Херня какая-то
LJ Markov Random Text Generator
Poetry Links - Travesty Generator
Генератор Болезней
Random Text Generator
Генерация текста \ Ainte
Генератор уникальных ключевых фраз /апрель 2006/