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

Форум PHP

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

 

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

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

тема: Парсер я маркета
 
 автор: goacher   (06.07.2010 в 15:43)   письмо автору
 
 

Делаю парсер яндекс маркета.
Необходимо сделать получение страницы например этой
http://market.yandex.ru/guru.xml?CMD=-RR=5,0,0,0-VIS=160-CAT_ID=117929-EXC=1-PG=10&hid=90581

Через curl+proxy (видимо по другому никак)
т.к file_get_contents один раз прошелся и теперь блокируют.

Заранее благодарен тому, кто выложит функцию.

  Ответить  
 
 автор: VITtek   (06.07.2010 в 21:25)   письмо автору
 
   для: goacher   (06.07.2010 в 15:43)
 

Мульти курлом в 10 потоков (Бана не ззааммееччеенн):



<?php 
$ua 
"Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.14) Gecko/2009082707 Firefox/3.0.14";

$ch curl_init("http://market.yandex.ru/guru.xml?CMD=-RR=5,0,0,0-VIS=160-CAT_ID=117929-EXC=1-PG=10&hid=90581");
curl_setopt($chCURLOPT_USERAGENT$ua);
curl_setopt ($chCURLOPT_HEADER1);
curl_setopt($chCURLOPT_RETURNTRANSFER1);

$output curl_exec ($ch);
$mass[] .=$output;
curl_close($ch);

preg_match_all ('|Set-Cookie: ([^;]*);|isU',$output,$content_com);

$cook="Set-Cookie: ".$content_com[1][0]."; ".$content_com[1][1].";";




$ch1 curl_init();
$ch2 curl_init(); 
$ch3 curl_init();
$ch4 curl_init();
$ch5 curl_init();
$ch6 curl_init();  
$ch7 curl_init();
$ch8 curl_init(); 
$ch9 curl_init();
$ch10 curl_init();


curl_setopt($ch1CURLOPT_URL"http://market.yandex.ru/guru.xml?hid=90581&CMD=-RR=5,0,0,0-VIS=201E2-CAT_ID=117929-BPOS=10-EXC=1-PG=10&greed_mode=false"); 
curl_setopt($ch2CURLOPT_URL"http://market.yandex.ru/guru.xml?hid=90581&CMD=-RR=5,0,0,0-VIS=201E2-CAT_ID=117929-BPOS=20-EXC=1-PG=10&greed_mode=false");
curl_setopt($ch3CURLOPT_URL"http://market.yandex.ru/guru.xml?hid=90581&CMD=-RR=5,0,0,0-VIS=201E2-CAT_ID=117929-BPOS=30-EXC=1-PG=10&greed_mode=false");
curl_setopt($ch4CURLOPT_URL"http://market.yandex.ru/guru.xml?hid=90581&CMD=-RR=5,0,0,0-VIS=201E2-CAT_ID=117929-BPOS=40-EXC=1-PG=10&greed_mode=false");
curl_setopt($ch5CURLOPT_URL"http://market.yandex.ru/guru.xml?hid=90581&CMD=-RR=5,0,0,0-VIS=201E2-CAT_ID=117929-BPOS=50-EXC=1-PG=10&greed_mode=false");
curl_setopt($ch6CURLOPT_URL"http://market.yandex.ru/guru.xml?hid=90581&CMD=-RR=5,0,0,0-VIS=201E2-CAT_ID=117929-BPOS=60-EXC=1-PG=10&greed_mode=false");
curl_setopt($ch7CURLOPT_URL"http://market.yandex.ru/guru.xml?hid=90581&CMD=-RR=5,0,0,0-VIS=201E2-CAT_ID=117929-BPOS=70-EXC=1-PG=10&greed_mode=false");
curl_setopt($ch8CURLOPT_URL"http://market.yandex.ru/guru.xml?hid=90581&CMD=-RR=5,0,0,0-VIS=201E2-CAT_ID=117929-BPOS=80-EXC=1-PG=10&greed_mode=false");
curl_setopt($ch9CURLOPT_URL"http://market.yandex.ru/guru.xml?hid=90581&CMD=-RR=5,0,0,0-VIS=201E2-CAT_ID=117929-BPOS=90-EXC=1-PG=10&greed_mode=false");
curl_setopt($ch10CURLOPT_URL"http://market.yandex.ru/guru.xml?hid=90581&CMD=-RR=5,0,0,0-VIS=201E2-CAT_ID=117929-BPOS=100-EXC=1-PG=10&greed_mode=false");


curl_setopt($ch1CURLOPT_USERAGENT$ua);
curl_setopt($ch2CURLOPT_USERAGENT$ua);
curl_setopt($ch3CURLOPT_USERAGENT$ua);
curl_setopt($ch4CURLOPT_USERAGENT$ua);
curl_setopt($ch5CURLOPT_USERAGENT$ua);
curl_setopt($ch6CURLOPT_USERAGENT$ua);
curl_setopt($ch7CURLOPT_USERAGENT$ua);
curl_setopt($ch8CURLOPT_USERAGENT$ua);
curl_setopt($ch9CURLOPT_USERAGENT$ua);
curl_setopt($ch10CURLOPT_USERAGENT$ua);

curl_setopt ($ch1CURLOPT_COOKIE$cook);
curl_setopt ($ch2CURLOPT_COOKIE$cook);
curl_setopt ($ch3CURLOPT_COOKIE$cook);
curl_setopt ($ch4CURLOPT_COOKIE$cook);
curl_setopt ($ch5CURLOPT_COOKIE$cook);
curl_setopt ($ch6CURLOPT_COOKIE$cook);
curl_setopt ($ch7CURLOPT_COOKIE$cook);
curl_setopt ($ch8CURLOPT_COOKIE$cook);
curl_setopt ($ch9CURLOPT_COOKIE$cook);
curl_setopt ($ch10CURLOPT_COOKIE$cook);

curl_setopt ($ch1CURLOPT_HEADER1);
curl_setopt ($ch2CURLOPT_HEADER1);
curl_setopt ($ch3CURLOPT_HEADER1);
curl_setopt ($ch4CURLOPT_HEADER1);
curl_setopt ($ch5CURLOPT_HEADER1);
curl_setopt ($ch6CURLOPT_HEADER1);
curl_setopt ($ch7CURLOPT_HEADER1);
curl_setopt ($ch8CURLOPT_HEADER1);
curl_setopt ($ch9CURLOPT_HEADER1);
curl_setopt ($ch10CURLOPT_HEADER1);

curl_setopt($ch1CURLOPT_RETURNTRANSFER1);
curl_setopt($ch2CURLOPT_RETURNTRANSFER1);
curl_setopt($ch3CURLOPT_RETURNTRANSFER1);
curl_setopt($ch4CURLOPT_RETURNTRANSFER1);
curl_setopt($ch5CURLOPT_RETURNTRANSFER1);
curl_setopt($ch6CURLOPT_RETURNTRANSFER1);
curl_setopt($ch7CURLOPT_RETURNTRANSFER1);
curl_setopt($ch8CURLOPT_RETURNTRANSFER1);
curl_setopt($ch9CURLOPT_RETURNTRANSFER1);
curl_setopt($ch10CURLOPT_RETURNTRANSFER1);

$mh curl_multi_init();
curl_multi_add_handle($mh,$ch1);
curl_multi_add_handle($mh,$ch2);
curl_multi_add_handle($mh,$ch3);
curl_multi_add_handle($mh,$ch4);
curl_multi_add_handle($mh,$ch5);
curl_multi_add_handle($mh,$ch6);
curl_multi_add_handle($mh,$ch7);
curl_multi_add_handle($mh,$ch8);
curl_multi_add_handle($mh,$ch9);
curl_multi_add_handle($mh,$ch10);

$running=null;  
do  
{  
curl_multi_exec($mh,$running);  
} while (
$running 0);  

$mass[] .= curl_multi_getcontent($ch1);
$mass[] .= curl_multi_getcontent($ch2);
$mass[] .= curl_multi_getcontent($ch3);
$mass[] .= curl_multi_getcontent($ch4);
$mass[] .= curl_multi_getcontent($ch5);
$mass[] .= curl_multi_getcontent($ch6);
$mass[] .= curl_multi_getcontent($ch7);
$mass[] .= curl_multi_getcontent($ch8);
$mass[] .= curl_multi_getcontent($ch9);
$mass[] .= curl_multi_getcontent($ch10);

print_r('<pre>');
print_r($mass);
?>

  Ответить  
 
 автор: goacher   (07.07.2010 в 15:06)   письмо автору
 
   для: VITtek   (06.07.2010 в 21:25)
 

сделал так:

$ssilka="http://market.yandex.ru";
$ch = curl_init($ssilka);
curl_setopt($ch, CURLOPT_USERAGENT, $ua);
curl_setopt ($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec ($ch);
curl_close($ch);

preg_match_all ('|Set-Cookie: ([^;]*);|isU',$output,$content_com);
$cook="Set-Cookie: ".$content_com[1][0]."; ".$content_com[1][1].";";
print_r($output);


сначала грабило нормально, а потом на запрос по ссылке выдает страницу

Доступ к нашему сервису запрещен!
Вполне возможно, что ваш компьютер заражен вирусом или spyware (вредоносной программой), которая автоматически обращается к Яндексу.
Рекомендуем вам проверить компьютер на вирусы или обратиться к администратору вашего компьютера или вашей сети.
О других возможных причинах и способах их устранения вы можете узнать здесь.

  Ответить  
 
 автор: goacher   (07.07.2010 в 15:58)   письмо автору
 
   для: goacher   (07.07.2010 в 15:06)
 

видимо по ip банит...

  Ответить  
 
 автор: VITtek   (07.07.2010 в 17:32)   письмо автору
 
   для: goacher   (07.07.2010 в 15:58)
 

Ну значит: Либо ставить паузу между запросами, либо прокси.
Даже не знаю какой из способов хуже )))

Как делать с прокси я тебе где то уже писал

  Ответить  
 
 автор: goacher   (07.07.2010 в 17:36)   письмо автору
 
   для: VITtek   (07.07.2010 в 17:32)
 

паузы позно уже делать, забанили))

  Ответить  
Rambler's Top100
вверх

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