Просмотр полной версии : Помогите реализовать парсер результатов ГУГЛА
scorpic393
03.05.2010, 20:50
Помогите плииизз реализовать парсер результатов ГУГЛА,
т.е. я посылаю ему inurl:"blablabla" , он мне выдаёт результаты, допустем 10, по дефлоту.
и я из этих результатов должен получить список УРЛов, на сайты с моим поисковым запросом, подскажите плиз и посоветуйсте алгоритм написание на PHP такого
ищи по форуму, было много всяких вариантов
зачем изобретать что то еще... если уже готовые скрипты есть?
типа скрипт одабейс (http://jonn22.com/sp/index.php?productID=116)
зачем изобретать что то еще... если уже готовые скрипты есть?
типа скрипт одабейс (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);
да помогут тебе этот (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) линки
модуль из одного довольно большого парсинг-движка:
// 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,'&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
наверно Вас в гугле так и забанили...
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot