PDA

Просмотр полной версии : Помогите реализовать парсер результатов ГУГЛА


scorpic393
03.05.2010, 20:50
Помогите плииизз реализовать парсер результатов ГУГЛА,
т.е. я посылаю ему inurl:"blablabla" , он мне выдаёт результаты, допустем 10, по дефлоту.

и я из этих результатов должен получить список УРЛов, на сайты с моим поисковым запросом, подскажите плиз и посоветуйсте алгоритм написание на PHP такого

WNZRS
03.05.2010, 20:54
ищи по форуму, было много всяких вариантов

BABBLS
03.05.2010, 21:39
зачем изобретать что то еще... если уже готовые скрипты есть?
типа скрипт одабейс (http://jonn22.com/sp/index.php?productID=116)

m0Hze
04.05.2010, 00:33
зачем изобретать что то еще... если уже готовые скрипты есть?
типа скрипт одабейс (http://jonn22.com/sp/index.php?productID=116)
Кагбе, я в шоке. 150$ за 100-1500 строчек говяного кода?
Даю наводку ТС.

$page = file_get_contents('http://www.google.com/ie?q=' . urlencode($query) .
'&num='.$countPage.'&hl=ru&start=' . $pageNum . '00&sa=N');
preg_match_all('#title="(.*)" href=(.*)>#isU', $page, $match);

devton
04.05.2010, 10:03
да помогут тебе этот (http://www.google.com/ie?q=google+for+dummies&hl=ru&safe=off&num=100&start=0&sa=N&filter=0) и этот (https://forum.antichat.ru/showpost.php?p=1838949&postcount=7) линки

eLWAux
04.05.2010, 13:53
модуль из одного довольно большого парсинг-движка:

// itspoma, 12.04.2010

class google
{
public $pages = 0;
public $try = 0;

function parse($q, $page = 0) {
global $config;

$count_inpage = rand(41,59);
$offset = $page*$count_inpage;
$google_page = curl('http://www.google.com/search?hl=ru&q='.urlencode($q).'&start='.$offset.'&num='.$count_inpage.'&');
debug($google_page, 'google_page'.($page+1));

if (stristr($google_page, '>Sorry...<'))
{
sleep(10);
$page += rand(1,4);
$this->try++;
if ($this->try <= 3) {
return $this->parse($q.' ', $page);
}
return array();
}

$links = array();
$temp_links = array();
preg_match_all('/<h3 class=r><a href="(.+?)"/is', $google_page, $temp_links);
ar_push_ar($links, $temp_links[1]);

preg_match_all('/<a href="\/url\?q=(.+?)[&|"]+/is', $google_page, $temp_links);
ar_push_ar($links, $temp_links[1]);

if ($config['debug'] == True)
echo '<b><font color=red>page '.($page+1).'</b></font> '.count($links).'<br/>';

if (stristr($google_page,'&amp;start='.(($page+1)*$count_ inpage))) {
if ($this->pages-1 > 0 && $page >= $this->pages-1) {
return $links;
}
$temp_links = $this->parse($q, $page+1);
ar_push_ar($links, $temp_links);
}

return $links;
}
}

// ф-ция для добавления масива в другой масив
function ar_push_ar(&$a,$b)
{
foreach($b as $el)
{
array_push($a, $el);
}
}



юзать:
$g = new google();
$g->pages = 3;
$links = $g->parse('antichat');
var_dump( $links );

scorpic393
04.05.2010, 15:31
moHze, elWaux, спасибо большое!

olishort
04.05.2010, 23:03
через пару запросов от гугла капча придет, либа бан. юзай прокси

phpdreamer
04.05.2010, 23:49
через пару запросов от гугла капча придет, либа бан. юзай прокси
:D
наверно Вас в гугле так и забанили...