作者tomelf (Cheer UP!)
站內PHP
標題Re: [請益] 有關HTTP POST Request的問題
時間Fri Apr 27 00:44:16 2007
※ 引述《tomelf (Cheer UP!)》之銘言:
: 小弟想要寫一個功能,能夠自動擷取Http Request的回傳頁面
: 舉例來說,任意一個有Query Form的網頁(如http://www.yahoo.com/)
: 我要抓出網頁中的form,並且自動填入資料,擷取回傳頁面
: 當form的傳送method=get時,我知道怎樣直接取得回傳頁面,
: 但是當form method=post時就會出問題
: (因為回傳頁面常常不是form action中的那個頁面)
: 我有google過相關方法,大部分都只有提到如何利用PHP或javascript去對某個
: 頁面做get或post的request,但都沒有提到怎樣處理以上的問題。
: 想請問各位高手,有沒有什麼好方法可以解決這個問題,萬分感謝Orz
>回應alpe:
例如
http://lyricsearch.net/這個網頁,裡面有一個form,
aciton=
http://www.optinpro.com/scripts/subscribe.asp, method=POST
我現在是用PEAR裡的html_request來做,對於POST的作法如下:(程式碼略微修改過)
$dataKey: POST參數的key值陣列
$data: 存POST參數的陣列
if($form_method=='post'){
for($i=0;$i<count($dataKey);$i++){
$req->addPostData($dataKey[$i],$data[$dataKey[$i]]);
}
if (!PEAR::isError($req->sendRequest())) {
return $req->getResponseBody();
}else{
echo 'HTTP Post error: Cannot using this url!<br>';
}
}
這樣會用POST傳遞參數到網站並且回傳action網址內容。
然而上面的回傳不是我要的,真正的回傳網頁會他會自動redirect到
http://search.lyrics.astraweb.com/?word=ricky+martin去
這個才是我真正要的頁面
>回應MrMarcus:
CURL中有可以解決這方法的library嗎?我會去google看看的,謝謝!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.115.220.169
※ 編輯: tomelf 來自: 140.115.220.169 (04/27 00:46)
推 alpe:Error @@ 好像要login耶 04/27 00:48
※ 編輯: tomelf 來自: 140.115.220.169 (04/27 00:52)
推 tomelf:不好意思,剛剛在修文,在試一次網址看看吧! 04/27 00:55
推 alpe:search.lyr 是用GET的. 04/27 00:55
→ tomelf:能lyricsearch自己做了一些處理,才用GET redirect到另一個 04/27 00:57
→ alpe:curl 可以 處理 header redirect, 不過js location 就不行 04/27 00:56
→ tomelf:站去 如果程式光看lyricsearch網站看不到redirect的地方 04/27 00:57
→ tomelf:恩恩,我會去找找curl裡面hear redirect的方法 04/27 00:59
推 alpe:那頁的確用GET傳值. 你可以抓package下來看看 04/27 00:59
→ alpe:你看錯form了 =_=||| form target="_new" acrion="http://s" 04/27 01:02
→ alpe:POST 那個是 Email Address 的input 04/27 01:03
→ alpe:裝個firfox 用 FireBug 去找. 會快狠準 04/27 01:05
推 tomelf:喔喔…瞭解!謝謝你的解答^^ 04/27 01:11