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

Форум PHP

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Поиск в Google

Сообщения:  [1-8] 

 
 автор: mihdan   (07.01.2008 в 01:29)   письмо автору
 
   для: dima2207   (05.01.2008 в 18:53)
 

Вообщето на гугле выложен API-интерфейс для поиска

   
 
 автор: dima2207   (05.01.2008 в 22:12)   письмо автору
 
   для: Trianon   (05.01.2008 в 21:49)
 

Да , дейсвительно ГЕТ ! Спасибо всем !

   
 
 автор: Trianon   (05.01.2008 в 21:49)   письмо автору
 
   для: dima2207   (05.01.2008 в 21:40)
 

А Вам и вправду нужен POST-запрос?
Вроде поисковики воспринимают GET :))

   
 
 автор: dima2207   (05.01.2008 в 21:40)   письмо автору
 
   для: ddhvvn   (05.01.2008 в 20:49)
 

Я использовал следующий скрипт :



<?

  $hostname 
"www.google.ru";
  
$path "/search"
  
$line "";
  
// Устанавливаем соединение, имя которого
  // передано в параметре $hostname
  
$fp fsockopen($hostname80$errno$errstr30);
  
// Проверяем успешность установки соединения
  
if (!$fp) echo "$errstr ($errno)<br />\n";
  else
  {
    
// Данные HTTP-запроса
    
$data =
    
"f=".urlencode("http://www.google.ru/search")."lr=".urlencode("")."h1=".urlencode("ru")."q=".urlencode("cms")."btnG=".urlencode("Поиск в Google")."\r\n\r\n";
    
// Заголовок HTTP-запроса
    
$headers "POST $path HTTP/1.1\r\n";
    
$headers .= "Host: $hostname\r\n";
$headers .= "Content-type: application/x-www-form-urlencoded\r\n"//Важно!
$headers .= "Content-Length: ".strlen($data)."\r\n"//Важно!

fwrite($fp$headers.$data); // Отправляем HTTP-запрос серверу: и заголовок и тело.
    // Получаем ответ
    
while (!feof($fp))
    {
      
$line .= fgets($fp1024);
    }
    
fclose($fp);

  }

  
print_r($line);
?>


Но в ответ получаю пустую страницу !

Почему ? Может я гдето неправельно передал запрос ?

   
 
 автор: ddhvvn   (05.01.2008 в 20:49)   письмо автору
 
   для: dima2207   (05.01.2008 в 20:27)
 

>Как сэмитировать передачу $_POST параметров вышеуказанным скриптом ?
>Или хотя-бы задержать вывод страницы в браузер (перехватить страницу).


1. Отослать соотвествующий заголовок
http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=32144
Но в Вашем случае я, скорее всего, использовал бы cURL.

2. Использовать буферизацию!

P.S. к дизайнеру: надо наверное, слово "ПОИСК" вверху сделать жирным шрифтом в 25 px красного цвета!

   
 
 автор: dima2207   (05.01.2008 в 20:27)   письмо автору
 
   для: SHAman   (05.01.2008 в 19:33)
 

Мне удалось немного переделать форму для поиска :

<form action="http://www.google.ru/search" name=f>
<input name=hl type=hidden value=ru>
<input type=hidden autocomplete="off" maxlength=2048 name=q size=55 title="Поиск вGoogle"value="Строка для поиска"><br><input name=btnG type=submit value="Поиск в Google">
<input type=hidden id=all type=radio name=lr value="" checked></form>


как сделать все тоже самое только что-бы параметры передавались из скрипта :

<?
$host 
"www.google.ru";
$path "/search";
if ( !
$buffer getdata($host$path) ) {
    exit(
"Ошибка");   }

echo 
$buffer;


// функция получения страницы с удаленного хоста.
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;
}
?>

Как сэмитировать передачу $_POST параметров вышеуказанным скриптом ?
Или хотя-бы задержать вывод страницы в браузер (перехватить страницу).

   
 
 автор: SHAman   (05.01.2008 в 19:33)   письмо автору
 
   для: dima2207   (05.01.2008 в 18:53)
 

Для начала, нужно понять, что браузер и скрипт - почти одно и то же. А серверу пофиг кому отдавать. Он отдает в STDOUT.

А вообще, чтобы грабить выдачу с гугла, нужно сильно постараться. Подделать кучу заголовков и вообще, прикинуться юзером.

   
 
 автор: dima2207   (05.01.2008 в 18:53)   письмо автору
 
 

Всем привет !
Как реализовать автоматический поиск в гугле ? Какие параметры нужно передать странице http://google.ru/ ? Что-бы результат поиска выводился не в браузер а в скрипт .

   

Сообщения:  [1-8] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

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