2012-06-27 3 views
0

Я хочу, чтобы получить HTML исходный код с этой страницы: http://bahn.ltur.com/index/search/?lang=de_DE&searchin=DE-SB-VI&trip_mode=trip_simple&from_spar=Hamburg+Dammtor&to_spar=Leipzig+Hbf&start_datum=01.07.2012&start_time=23%3A49&end_datum=01.07.2012&end_time=23%3A51&SEA_adults=1&trainclass_spar=2завиток получить Исходник- GETparams

я могу получить доступ к сайту, когда я иду в этот URL. Я не могу получить исходный код через завиток. не в bash «curl -iL url> site.html», ни с этим скриптом php: Я получаю стартовую страницу (bahn.ltur.com).

Код для отправки запроса GET

$ch=curl_init(); 

curl_setopt($ch,CURLOPT_URL,'http://bahn.ltur.com/index/search/?lang=de_DE&searchin=DE-SB-VI&trip_mode=trip_simple&from_spar=Hamburg+Dammtor&to_spar=Leipzig+Hbf&start_datum=01.07.2012&start_time=23%3A49&end_datum=01.07.2012&end_time=23%3A51&SEA_adults=1&trainclass_spar=2'); 
curl_setopt($ch, CURLOPT_AUTOREFERER, TRUE); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE); 
curl_exec($ch); 

я также пытался отправить POST PARAMS к этой конкретной страницы - но не повезло. Форма находится на этой странице: http://bahn.ltur.com/ с [...] , когда вы нажмете «поиск», вы видите короткое время выше (blah/index/search /? Params [...]).

любая помощь?

/////// Edit:

/////// Ответ:

Первое: получить печенье со страницы (ж/GET-Params) Во-вторых: перейти к подробностям и отправить файл cookie.

Благодаря @ Даниэлю Штенбергу за подсказку! Дайте ему репутацию!

/* get cookie */ 
$ckfile = tempnam ("/tmp", "CURLCOOKIE"); 
$ch=curl_init(); 
curl_setopt($ch,CURLOPT_URL,'http://bahn.ltur.com/index/search/?lang=de_DE&searchin=DE-SB-VI&trip_mode=trip_simple&from_spar=Hamburg+Dammtor&to_spar=Leipzig+Hbf&start_datum=01.07.2012&start_time=23%3A49&end_datum=01.07.2012&end_time=23%3A51&SEA_adults=1&trainclass_spar=2'); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE); 
curl_setopt($ch, CURLOPT_HEADER, TRUE); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); 
curl_setopt($ch, CURLOPT_COOKIEJAR, $ckfile); 
$html = curl_exec($ch); 
/* get page */ 
$ch = curl_init("http://bahn.ltur.com/details"); 
curl_setopt($ch, CURLOPT_COOKIEFILE, $ckfile); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); 

echo $html; 
curl_close($ch); 

ответ

1

Вы пытались добавить:

curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); 

$html = curl_exec($ch); 

без первого варианта, локон будет просто выход все, что он выборки. И для строгой «добра», вы должны проверить возвращаемое значение из curl_exec, а также:

if ($html === false) { 
    die("Curl error: " . curl_error($ch)); 
} 
+0

спасибо, но все равно неудобства. нет ошибки, я все равно получаю «домашнюю страницу». – meeeeeh

0

Попробуйте добавить следующее в вас Curl код

curl_setopt($ch, CURLOPT_BINARYTRANSFER, true); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);

SSL_VERIFYER часть означает, что он не является обращая внимание, если у него нет SSL-сертификата.

+0

эй! спасибо за ваш ответ, но это не помогает :( – meeeeeh

0

Скорее всего, это происходит потому, что на странице формы поиска находятся куки-файлы, поэтому при отправке запроса на поиск вы также должны передавать файлы cookie. Кажется, что страница поиска устанавливает/обновляет файл cookie BAHNSESSID.

+0

спасибо. То, что я тоже думаю. Посмотрим, как я получаю эту работу. curl_setopt ($ ch, CURLOPT_COOKIE, "BAHNSESSID = fd12a6c3d517c702eab0014879d551ef; bla = foo "); – meeeeeh

+0

да, вы поняли! – meeeeeh

Смежные вопросы