Php + curl парсинг выдачи гугла

Вот банальный пример получения выдачи "10 страниц" с гугл,по запросу "аниме"
И? Тоже самое можно и через file_get_contents сделать :)
Вы попробуйте получить 20 000 страниц ! Вот тут точно она наресуется только намного раньше 20к :D
Капча там есть при превышении лимита запросов. Одно непонятно как можно стараться помоч в разрешении вопроса если вы даже сути непоняли. У него нет проблем с получением информации от гугла у него проблема с тем что запросов туева хуча и выползает антибот. А вы предлогаете ему код который у него и так работает.
 
dexgun

Либо я не увидел либо ваш код не завершен...
получения выдачи "10 страниц" с гугл,по запросу "аниме",
Нету ни цикла ни даже GET параметра страницы в ссылке. Следовательно пример даже не соответствует вашему же описанию.

PS. Ничего личного... Если я показался резким или упрекающим... Простите, данной цели не преследую. Только лиш стараюсь указать на недочеты потому как в свое время только и мечтал о том что бы кто либо меня тыкал в подобное ибо доходить самому раза в 3 дольше (((
 
dexgun ты издеваешься?)
Какие 10 запросов?)
Ты бы еще 1 запрос сделал и спросил: "А что за капча то ребят?".)
TIMEOUT = 50, да с такой задержкой за неделю справлюсь.)
Dexgun, это будет ресурс для сеошников, ежедневный парсинг выдачи поисковиков и анализ позиций, количество запросов будет в тысячах.
Я буду тебе очень благодарен если ты мне поможешь капчу сохранить на сервере для дальнейшей отправки (правильную).

to Inviseble_Demon
Спасибо, ссылка теперь вроде рабочая, вот капчу еще сохранить нужную не могу.
Вот нашел интересное:
Для просмотра ссылки Войди или Зарегистрируйся
Голова уже не варит.
 
Inviseble_Demon меня опередил.)
И меня извините если что не то написал, уже голова кипит от этой капчи.)
 
  • Заблокирован
  • #35
Извините, я не знал,а почему бы вам тогда просто не делать тайм аут с каждой скажем 100 сграбленной странице,наверника тогда и капча не выползит, ведь на разгадывание одной капчи уходит минимум 5-10 секунд через антигейт,не легче просто таймаут на 1 секунду поставить и дело можно сказать решено?Если так не получится,тогда дайте сам html код страницы которая выползает при появлении капчи, я напишу её сохранение.
 
Для просмотра ссылки Войди или Зарегистрируйся
Вы заблуждаетесь...
Задержка тут ненужна в следствии преследования цели сокращения времени.
Если использовать антикапчу то временные рамки значительно снижаются потому как каждая капча дает возможность к примеру сделать ещё 1000 запросов. А если использовать задержку то это будит немерено долго. Тогда проще прокси... Но с ними тоже гемора немерено потому как большая часть их уже под фильтром гугла и капча лезит чуть ли не с 1 запроса.

Вот нашел интересное: Для просмотра ссылки Войди или Зарегистрируйся
Это вам точно ненужно!

TIMEOUT = 50, да с такой задержкой за неделю справлюсь.)
Это не та задержка о которой вы подумали. Это временные рамки на исполнение запроса и получение данных cURL`ом
Задается он для другого...

Проверьте у вас точно файл с куками создается?
Так же проверьте свою регулярку точно ли она выдает именно то что нужно. И используйте preg_match а не preg_match_all потому как значение вам нужно 1 использовать поиск ALL безсмысленно.
 
Так же что именно вы получаете в ответ от гугла когда вы высылаете ему ответ на его капчу.
Выдает снова капчу или говарит что она не верная и выдает другую. Это важно! Потому как если он не говарит что капча неверная то отправка данных игнорируется.
 
Так же возможно я ошибся в 1 месте....
Дело в том что у нас формируется ссылка для отправки капчи из параметров для капчи и ссылки в которой есть коварный символ "?" который скорее всего и перебивает все к чертям и запрос совершенно другой уходит. Но проблема ещё вот в чем для того что бы было все ном нужно сделать urlencode но если вы меня послушали и сделали инициализацию ссылки для поиска с urlencode то выходит часть ссылки уже кодирована и при повторном кодировании выйдет что % закодируется снова.... кароче... сам уже запутался... пробуйте 2 варианта.

I
function google_captcha ($id, $link, $responce) {$result = 'Для просмотра ссылки Войди или Зарегистрируйся'.urlencode($link).'&id='.$id.'&captcha='.$responce.'&submit=Submit';
return
$result;
}


II
function google_captcha ($id, $link, $responce) {$result = 'Для просмотра ссылки Войди или Зарегистрируйся'.urlencode(urldecode($link)).'&id='.$id.'&captcha='.$responce.'&submit=Submit';
return
$result;
}
 
  • Заблокирован
  • #39
Ну в чём тогда проблемма,просто тогда нужно сделать проверку гугл странице на наличие на ней капчи,можно сделать это с помощью простой функции strstr,вот пример
PHP:
$ua = 'opera';
$cookieFile = str_replace('\\','/', getcwd()).'/tmp/cookie.txt';
$word = "аниме";
$count = "10";
 
$link = "http://www.google.ru/search?client=opera&rls=ru&q=".rawurlencode($word)."&sourceid=opera&ie=utf-8&oe=utf-8&channel=suggest";
 
function getPage($url,$cookieFile)
{
global $ua,$cookieFile,$word,$count;
$ch=curl_init($url);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch,CURLOPT_HEADER,0);
curl_setopt($ch, CURLOPT_USERAGENT, $ua);
curl_setopt($ch, CURLOPT_TIMEOUT,50);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch,CURLOPT_COOKIEFILE,$cookieFile);
curl_setopt($ch,CURLOPT_COOKIEJAR,$cookieFile);
$answer=curl_exec($ch);
return $answer;
}
for($i=0;$i<100000;$i++)
{
$link  = "http://www.google.com/search?sourceid=chrome&ie=UTF-8&q= ".rawurlencode($word )."&num=$i&hl=ua&start=$i";
 
$page = getPage($link,$cookieFile);
 
if( strstr($page ,"www.google.ru/sorry/Captcha")) // если есть на странице ссылка на капчу,то тогда вызываем функцию её отбора и отправки в антигейт,нет тогда парсим дальше
{
//вызываете  вашу функцию получения капчи
}
}
Вот и всё, если вам потребуется отобрать капчу со странице,то дайте мне html код страницы,т.к парсить по 10000 страниц у меня нету сейчас времени,а так я вам это сделаю.
 
Назад
Сверху