Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Скрипт парсинга google
 
 автор: Artem S.   (02.09.2005 в 16:00)   письмо автору
 
 

Пришло письмо, с просьбой привести оный скрипт.
Пишу сюда, так как может кому-то еще покажется он интересным.
<?php

$query 
"blablabla";
$page 0;
$num 10;

$host "www.google.com";
$path "/search.htm?q=$query&start=$page&num=$num";

if ( !
$buffer getdata($host$path) ) {
    exit(
"Ошибка");
}
if ( !
$links l_parse($buffer) ) {
    echo 
"Не найдено ссылок";
} else {
    
print_r($links);
}

// функция получения страницы с удаленного хоста.
function getdata($host$path)
{
     
$buffer true;
     
$fp = @fsockopen("tcp://".$host80$errno$errstr10);
     if (!
$fp) {
         return 
false;
     } else {
         
$out  "GET $path HTTP/1.1\r\n";
         
$out .= "Host: $host\r\n";
         
$out .= "Referer: $host$path\r\n";
         
$out .= "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)\r\n";
         
$out .= "Connection: Close\r\n";
         
$out .= "\r\n";

         
fwrite($fp$out);
         while (!
feof($fp)) {
             
$buffer .= fgets($fp1024);
         }
         
fclose($fp);
     }
     return 
$buffer;
}

// отделяем ссылки
// с помощью рег. выражения
function l_parse($buffer)
{
    
$LinkRegEx "!<a href=\"?'?(http://[^\"'>\s]+)!i";
    
preg_match_all($LinkRegEx$buffer$matches);
    
$size sizeof($matches[1]);
    if( empty(
$size) )
        return 
false;
    for(
$i 0$i $size$i++) {
        
// этим, мы удаляем лишние ссылки
        
if( !preg_match("/google|search?q=cache/i"$matches[1][$i]) ) {
            
$links[] = $matches[1][$i];
        }
    }
    return 
$links;
}

?>

   
 
 автор: cheops   (02.09.2005 в 20:42)   письмо автору
 
   для: Artem S.   (02.09.2005 в 16:00)
 

Давайте перенесём его в форум "Регулярные выражения", так как тема больше подходит для этого раздела http://www.softtime.ru/forum/index.php?id_forum=6.

   
 
 автор: Sasha   (03.09.2005 в 19:59)   письмо автору
 
   для: cheops   (02.09.2005 в 20:42)
 

А для чего он нужен? Просвятите тёмного ;)

   
 
 автор: Artem S.   (03.09.2005 в 20:55)   письмо автору
 
   для: Sasha   (03.09.2005 в 19:59)
 

Ну если его переделать, то можно с помощью него узнать на каком месте находиться сайт по определенному запросу.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования