Просмотр полной версии : Чем пропарсить выдачу Google?
/Montana
14.02.2009, 15:23
Чем пропарсить выдачу Google? Нужно выдрать URL'ы, по определённым запросам, немного штук 200-300. Есть ли готовые решения, желательно скрипт.
CrazyStudentS_Mi}{
14.02.2009, 15:59
hrefer
если скрипт то вот
http://www.google.com/ie?q=&num=100&hl=ru&start=0&sa=N&filter=0 это поиск
это потом тыкаем ссылки извлечь
java script:all=document.links.length;mass='<b>Всего ссылок на странице:\u0020'+all+'</b><br><br>\n';for(i=0;i<all;i++){mass+=document.links[i]+'<br>\n';}newwind=window.open('about:blank','result','w idth=600,top=100,left=100,scrollbars=1');newwind.d ocument.write(mass);
http://webdos.freezoka.com/files/htmllerz.zip
Doktor_radosti
16.02.2009, 10:58
Рабочий allsubmitter, зануленная Аура (там правда больше 1000 за один подход не спарсишь).
Пожалуйста, пример парсера для пхпбб (смотрите код, чтобы оптимизировать под иной движок)
<?php
/*Google parser v.0.1 by M4g, icq 884888*/
$log_file = 'log.dat';
$zapros = 'powered by phpbb';
set_time_limit (0);
//ignore_user_abort(true);
function setcookies($headers)
{
$headers=explode("\r\n",$headers);
for($x=0; $x<count($headers); $x++)
{
if(preg_match('/^set-cookie:[\s]+([^=]+)=([^;]+)/i', $headers[$x],$match))
return array($match[1] => urldecode($match[2]));
}
}
function parse_serp($engine, $query,$page=0)
{
global $cookies;
switch (strtolower($engine))
{
case 'google':
$page!=0 ? $page=100*$page : '';
$result='';
$site='www.google.com';
path='/ie?hl=en&num=100&start='.$page.'&lr=&q='.urlencode(trim($query));
$fp = @fsockopen($site, 80, $errno, $errstr, 30);
$out = "GET $path HTTP/1.1\r\n";
$out .= "Host: $site\r\n";
$out .= "Content-type: application/x-www-form-urlencoded\r\n";
$out .= "Connection: Close\r\n";
$out .= "User-Agent: Opera/9.60 (Windows NT 5.1; U; ru) Presto/2.1.1\r\n";
if ( count($cookies) > 0 )
{
$cookie_str = 'Cookie: ';
foreach ( $cookies as $cookieKey => $cookieVal ) {
$cookie_str .= $cookieKey."=".urlencode($cookieVal)."; ";
}
$out .= substr($cookie_str,0,-2)."\r\n";
}
$out .= "Referer: http://www.google.com/ie\r\n\r\n";
@fwrite($fp, $out);
while (!@feof($fp))
{
$result .= @fread($fp, 1024);
}
$cookies=setcookies($result);
flush();
print $query."<br/>\n";
$pattern = '/<a title="(.+)" href=(.+)>(.+)<\/a>/isU';
if(preg_match_all($pattern, $result, $matches))
{
for ($i=0; $i<count($matches[0]); $i++)
{
$link = $matches[2][$i];
$link=trim($link);
$serp[] = $link;
}
}
break;
}
return $serp;
}
for($page=0;$page<11;$page++)
{
$result = parse_serp('google',$zapros,$page);
$different=array();
for($i=0;$i<count($result);$i++)
{
preg_match("/(.+)\/(viewtopic|login|\s)(.+)/i",$result[$i],$arra[$i]);
$different[]=$arra[$i][1];
}
$different=array_unique($different);
for($i=0;$i<count($different);$i++)
{
if(!empty($different[$i]))
{
$fp = fopen($log_file,"a");
flock ($fp, LOCK_EX);
fputs($fp,"\n".$different[$i]);
flock ($fp, LOCK_UN);
fclose($fp);
}
}
sleep(rand(13,19));
if(count($result)<100) break;
}
?>
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot