[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Помогите немного с Curl
alex12060
Здравствуйте уважаемые)
У меня возникла небольшая проблема.
В общем, написан скрипт, который парсит некие страницы с помощью курла.
Дело заключается в том, что изначально я вытаскиваю форму, далее, после нажатия на ссылку "Поиск" происходит отправка формы на спец файл, он в свою очередь формирует ссылку и отправляет ее на другую страницу, та, прокручивает рекламу и через N секунд делает редирект на страницу результата.

Все ничего, но редирект имеет форму:


<meta http-equiv="refresh" content="0;url=/trips/hotellist/listInternal?pTxId=1712904&startIndex=0&checkInDate=2012-01-18&checkOutDate=2012-01-22&hotelMaxReturnPerPage=25&guestCounts=2....


Собственно, курл, удивленный, пытается открыть "Локальную версию" ссылки.

Я много думал над проблемой, даже пытался изменять это значение и удалять, но скрипт не успевает это сделать и происходит редирект.

Собствеено, вопрос. Как заставить Курл открыть ссылку на сайте, а не на локальном компьютере? Может есть какая опция? Спасибо :)



Спустя 6 минут, 2 секунды (18.01.2012 - 18:42) Winston написал(а):
Перед тем как через N секунд сделать, редирект, можно попробовать preg_replace чтобы добавить полный адрес для редиректа.



Спустя 2 минуты, 14 секунд Winston написал(а):
Цитата (Winston @ 18.01.2012 - 17:42)
что изначально я вытаскиваю форму, далее, после нажатия на ссылку "Поиск" происходит отправка формы на спец файл, он в свою очередь формирует ссылку и отправляет ее на другую страницу, та, прокручивает рекламу и через N секунд делает редирект на страницу результата.

Получаешь страницу, с помощью preg_replace исправляешь ссылку на абсолютную, и потом можешь смело жать "Поиск"

Спустя 5 минут, 58 секунд (18.01.2012 - 18:48) alex12060 написал(а):
Winston

Ты видимо не дочитал smile.gif

Цитата
Я много думал над проблемой, даже пытался изменять это значение и удалять, но скрипт не успевает это сделать и происходит редирект.


и еще ты не понял.

Сначала я нажимаю на поиск, потом меня кидает на спец скрипт (все верно)
Далее происходит составление урл (верно)
Загрузка составленного урл (верно)
После загрузки происходит неверный редирект.

Это знаешь, как здесь на форуме, табличка (подождите...)

Спустя 51 секунда (18.01.2012 - 18:49) alex12060 написал(а):
А еще, добавлю, что если убрать "CURLOPT_FOLLOWLOCATION", то страница вовсе не грузится..

Спустя 4 секунды (18.01.2012 - 18:49) Семён написал(а):
начнём с того, что если ты просматриваешь эту страницу, то редирект происходит не в CURL, а в твоём браузере.

Спустя 2 минуты, 56 секунд (18.01.2012 - 18:52) Winston написал(а):
А на код на твой можно посмотреть?

Спустя 1 минута, 32 секунды (18.01.2012 - 18:54) Семён написал(а):
Winston
Да я знаю что у него/неё в коде
..... CURL...
$result = curl_exec();
echo $result;

Спустя 1 минута, 17 секунд (18.01.2012 - 18:55) alex12060 написал(а):

if (isset($_GET['get'])) {

$url = 'http://globaltrips.lastminute.com/trips/interstitial/searchHotelsInternal';
$i = 0;

foreach($_GET as $k => $v) {
$url .= ($i == 0 ? '?' : '&').$k.'='.urldecode($v);
++
$i;
}

$c_file = $_SERVER['DOCUMENT_ROOT'].'cookies.txt';

$fp = curl_init($url);

//echo $url;

curl_setopt($fp, CURLOPT_RETURNTRANSFER, true);
curl_setopt($fp, CURLOPT_USERAGENT, 'Mozilla/5.0 (Ubuntu; X11; Linux i686; rv:9.0.1) Gecko/20100101 Firefox/9.0.1');
curl_setopt($fp, CURLOPT_REFERER, 'http://www.lastminute.com/');
curl_setopt($fp, CURLOPT_COOKIEJAR, $c_file);
curl_setopt($fp, CURLOPT_COOKIEFILE, $c_file);
curl_setopt($fp, CURLOPT_MAXREDIRS, 5);
curl_setopt($fp, CURLOPT_CONNECTTIMEOUT, 40);
//curl_setopt($fp, CURLOPT_HEADER, 1);
curl_setopt($fp, CURLOPT_FOLLOWLOCATION, 1);

$data = curl_exec($fp);

//echo '<pre>'.print_r(curl_getinfo($fp),1).'</pre>';

//preg_replace('#<meta http-equiv="(.*)" (.*) \/>#i', '...', $data);


$curl_errno = curl_errno($fp);
$curl_error = curl_error($fp);

echo $data; die;

if ($curl_errno > 0) {
echo $curl_error;
die;
}

curl_close($fp);
?>


Спустя 5 секунд (18.01.2012 - 18:55) Winston написал(а):
Цитата (alex12060 @ 18.01.2012 - 17:49)
если убрать "CURLOPT_FOLLOWLOCATION

Ну првильно, ведь без этой константы, твой скрипт не будет следовать за редиректами которые происходят на сайте...

Спустя 4 минуты, 41 секунда (18.01.2012 - 19:00) Семён написал(а):
alex12060
перечитай мои посты, ответ я тебе уже написал

Спустя 2 минуты, 57 секунд (18.01.2012 - 19:03) alex12060 написал(а):
Семён

Цитата
начнём с того, что если ты просматриваешь эту страницу, то редирект происходит не в CURL, а в твоём браузере.


Цитата
Да я знаю что у него/неё в коде

..... CURL...
$result = curl_exec();
echo $result;


Цитата
перечитай мои посты, ответ я тебе уже написал


Из всего этого, ценная информация лишь та, которая полагает, что редирект происходит в браузере. Но ответ так и не получен

Спустя 2 минуты, 32 секунды (18.01.2012 - 19:05) Winston написал(а):
Хм.. при переходе на
Цитата (alex12060 @ 18.01.2012 - 17:55)
globaltrips.lastminute.com

Меня кидает на http://www.travelocity.com
Так может стоит к нему подключаться curl_init?

Спустя 1 минута, 52 секунды (18.01.2012 - 19:07) alex12060 написал(а):
Winston

это уже посторонний сайт. Я вытаскиваю форму поиска с www.lastminute.com

хотя я кажется понял, как с этим разобраться, щас попробую

Спустя 9 минут, 10 секунд (18.01.2012 - 19:16) alex12060 написал(а):
Все, всем спасибо, проблема решена.
Я что-то затупил, и просто не сделал правильно изменение ссылки.


$data = preg_replace('#url=(.*)"#i', 'url=http://globaltrips.lastminute.com$1"', $data); // Не вернул обратно код

Спустя 3 часа, 14 минут, 39 секунд (18.01.2012 - 22:31) Winston написал(а):
Если проблема решена - не забываем нажимать кнопочку в своем первом посте
user posted image

PS: я уже нажал.
Быстрый ответ:

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