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

そのURLに行くとサイトにアクセスできます。curl でソースコードを取得できません。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 パラメータを送信しようとしましたが、うまくいきませんでした。フォームはそのページにあります: http://bahn.ltur.com/ with [...] 「検索」を押すと、上記の URL が短時間表示されます (blah/index/search/?params[... ]))。

助けはありますか?

///////編集:

///////答え:

1 つ目: ページから Cookie を取得します (GET-params を使用) 2 つ目: 詳細ページに移動して、Cookie を送信します。

ヒントをくれた@Daniel Stenbergに感謝します!彼に評判をあげてください!

/* 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);
4

3 に答える 3

1

追加してみましたか:

curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);

$html = curl_exec($ch);

最初のオプションがない場合、curlはフェッチしているものをすべて出力します。また、厳密な「良さ」については、curl_execからの戻り値も確認する必要があります。

if ($html === false) {
   die("Curl error: " . curl_error($ch));
}
于 2012-06-27T11:25:32.697 に答える
0

cUrlコードに次を追加してみてください

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

SSL_VERIFYER 部分は、SSL 証明書がない場合は注意を払わないことを意味します。

于 2012-06-27T12:02:20.927 に答える
0

これはおそらく、検索フォームがあるページで Cookie が設定されているために発生するため、検索リクエストを送信するときに、そこにも Cookie を渡す必要があります。検索ページでは、BAHNSESSID Cookie も設定/更新されているようです。

于 2012-06-27T13:05:15.647 に答える