看板 PHP 關於我們 聯絡資訊
※ 引述《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:但如果是抓http://lyricsearch.net/的form會是POST, 然後可 04/27 00:56
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