[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Узнать через парсинг позицию сайта в гугл по слову
человекЕ
здравствуйте. вот имеется код который мне помогли составить.
но я кажется где-то напортачил,что он выдает стринговую ошибку,там где echo...

$_GET['q']=preg_replace('/(\s)+/U','+',$_GET['q']);

$a=file_get_contents("http://www.google.ru/search?q=$_GET[q]&url=$_GET[url]&start=$i");

$b=preg_match_all('/(?:<h3 class="r"><a\shref="http:\/\/)(.+)(?:")/U',$a,$result,PREG_PATTERN_ORDER);

$i=0;
$i=$i+10;

$pos = array_search($_REQUEST['url'],$result[1])+$i+1; //здесь мы прибавили $i
if (in_array($_REQUEST['url'],$result[1]))
// проверяем, есть ли искомый URL на текущей странице
{
      echo $pos;echo $_REQUEST['url']; echo $_GET['q'];
       break; // уже нашли - значит из цикла выходим
       }

//Пользуйтесь стилями оформления кода //Nikitian



Спустя 50 минут, 16 секунд (30.12.2011 - 19:59) Winston написал(а):
Цитата (человекЕ @ 30.12.2011 - 18:09)
но я кажется где-то напортачил,что он выдает стринговую ошибку,там где echo...

Какую ошибку ?

Спустя 1 час, 12 минут, 45 секунд (30.12.2011 - 21:12) человекЕ написал(а):
Parse error: syntax error, unexpected T_STRING in C:\apach\Apache2\htdocs\fileget.php on line 28

Спустя 5 минут, 33 секунды (30.12.2011 - 21:18) Winston написал(а):
Посмотри на линию/несколько выше 28 строчки, возможно забыл точку с запятой.

Спустя 12 минут, 43 секунды (30.12.2011 - 21:30) человекЕ написал(а):
28 строчка это
echo $pos;echo $_REQUEST['url']; echo $_GET['q'];

вроде все на месте. код немного изменил(взял старый вариант),результат тотже
$pages='100';
for ($i=0;$i<$pages;$i=$i+10)
{
$_GET['q']=preg_replace('/(\s)+/U','+',$_GET['q']);

$a=file_get_contents("http://www.google.ru/search?q=$_GET[q]&url=$_GET[url]&start=$i");

$b=preg_match_all('/(?:<h3 class="r"><a\shref="http:\/\/)(.+)(?:")/U',$a,$result,PREG_PATTERN_ORDER);




$pos = array_search($_REQUEST['url'],$result[1])+$i+1; //здесь мы прибавили $i
if (in_array($_REQUEST['url'],$result[1]))
// проверяем, есть ли искомый URL на текущей странице
{
      echo $pos;echo $_REQUEST['url']; echo $_GET['q'];
       break; // уже нашли - значит из цикла выходим
       }
}

?>

Спустя 6 минут, 35 секунд (30.12.2011 - 21:37) Winston написал(а):
Цитата (человекЕ @ 30.12.2011 - 20:30)
echo $pos;echo $_REQUEST['url']; echo $_GET['q'];

Можно заменить на
echo $pos . ' ' . $_REQUEST['url'] . ' ' . $_GET['q'];

Попробуй закомменитить каждую строчку, начиная от if и идя вверх.

Спустя 7 минут, 57 секунд (30.12.2011 - 21:45) killer8080 написал(а):
человекЕ
вот так делать нельзя
$_GET['q']=preg_replace('/(\s)+/U','+',$_GET['q']);

правильно так
$_GET['q'] = urlencode($_GET['q']);

Спустя 7 минут, 19 секунд (30.12.2011 - 21:52) человекЕ написал(а):
спасибо.
и эффект будет такой же?

Спустя 4 минуты, 48 секунд (30.12.2011 - 21:57) человекЕ написал(а):
никто не пробовал делать свой скрипт ,который искал бы по ключевому слову позицию своего сайта в гугле?

Спустя 2 минуты, 1 секунда (30.12.2011 - 21:59) killer8080 написал(а):
Цитата (человекЕ @ 30.12.2011 - 20:52)
спасибо.
и эффект будет такой же?

если в запросе кирилица, то твой вариант вообще может не работать. Нужно формировать url по стандарту.
Кстати, гугл не банит такие запросы в цикле? Может стоит добавить задержку между запросами?

Спустя 16 часов, 32 минуты, 59 секунд (31.12.2011 - 14:32) человекЕ написал(а):
человеки, где я напортачил с циклом?
<?php
$pages='100';
for ($i=0;$i<$pages;$i=$i+10)
{
$_GET['q']=urlencode($_GET['q']);

$a=file_get_contents("http://www.google.ru/search?q=$_GET[q]&url=$_GET[url]");

$b=preg_match_all('/(?:<h3 class="r"><a\shref="http:\/\/)(.+)(?:")/U',$a,$result,PREG_PATTERN_ORDER);

$_GET['q']=urldecode($_GET['q']);
$pos = array_search($_REQUEST['url'],$result[1])+$i+1; //здесь мы прибавили $i
if (in_array($_REQUEST['url'],$result[1]))
//проверяем, есть ли искомый URL на текущей странице
{

echo $_REQUEST['url']."".$pos."". $_GET[q];
break;
sleep(10);
echo $_REQUEST['url']."".$pos."". $_GET[q];
break; // уже нашли - значит из цикла выходим
}
}

?>

Спустя 2 часа, 20 минут, 41 секунда (31.12.2011 - 16:53) walerus написал(а):
$_GET[q]
- ключ, если он НЕ переменная, пишется в кавычках
$_GET['q']


$pages='100';
for ($i=0;$i<$pages;$i=$i+10)
Этого вообще не понял
$i=$i+10
, а нельзя было просто $pages указать равным 10 ?

Спустя 12 минут, 59 секунд (31.12.2011 - 17:06) killer8080 написал(а):
человекЕ
ну я ж говорил, в цикл нужно вводить задержку, желательно рандомную. От такого шторма запросов гугл наверняка забанит ip, или выставит капчу. Да и юзер-агент не мешало бы подделать.

PS а где потерял &start=$i" в запросе.

Спустя 42 минуты, 26 секунд (31.12.2011 - 17:48) человекЕ написал(а):
спасибо.
точно,потерял.
не совсем понял walerusa .
$pages='100';
for ($i=0;$i<$pages;$i=$i+10)
вот это для того,чтобы $i вставлялась в &start=$i (от страницы 0 до 100(по +10 прибавляла))если ,допустим,не найден ответ на запрос,то ищет дальше от 0 и до 100 стр.
____________________________________________
заработало,корявато но выдал мне результат. осталось доработать.т.к. результат не всегда есть
set_time_limit(25);
sleep(5);
$pages='100';
for ($i=0;$i<$pages;$i=$i+10)
{
$_GET['q']=urlencode($_GET['q']);

$a=file_get_contents("http://www.google.ru/search?q=$_GET[q]&url=$_GET[url]&start=$i");

$b=preg_match_all('/(?:<h3 class="r"><a\shref="http:\/\/)(.+)(?:")/U',$a,$result,PREG_PATTERN_ORDER);

$_GET['q']=urldecode($_GET['q']);
$pos = array_search($_REQUEST['url'],$result[1])+$i+1; //здесь мы прибавили $i
if (in_array($_REQUEST['url'],$result[1]))
//проверяем, есть ли искомый URL на текущей странице
{
echo $_REQUEST['url']."".$pos."". $_GET['q'];
break; // уже нашли - значит из цикла выходим
}
}

?>

Спустя 3 минуты, 49 секунд (31.12.2011 - 17:52) человекЕ написал(а):
почему то иногда дает это,может из-за того,что долго грузит,поэтому в 25 сек не успевает ?
Fatal error: Maximum execution time of 25 seconds exceeded in C:\apach\Apache2\htdocs\fileget.php on line 19

Спустя 8 минут, 16 секунд (31.12.2011 - 18:00) killer8080 написал(а):
человекЕ
в начале поставь
set_time_limit(0);
ignore_user_abort(true);

Спустя 11 минут, 12 секунд (31.12.2011 - 18:11) человекЕ написал(а):
все нашел проблему.
почему то скрипт не дает рез-ат если написано 2 слова.

Спустя 34 минуты, 2 секунды (31.12.2011 - 18:45) Guest написал(а):
спасибо
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.