星期二, 10月 17, 2006

[PHP] 用 curl 來抓網路上的資料(三)

post 的方法跟 get 的方法也很相近, 但因為他的參數部份(即 get方法中
問號後面"變數名稱=值" 的部份),在傳遞的時候我們無法看到, 因此我們
無法知道它傳的參數為何 , 幸好, 有些工具可以使用。
在此我介紹 httpwatch, httpwatch 是一套商業軟體, 不是 freeware 所
以請購買合法軟體, 如果網友有人知道有功能相近的 freeware 可以介
紹給我, 我會把 httpwatch 換掉,此外 httpwatch 必須跟 IE 搭配使用
(Firefox 目前無法使用)。

安裝完 httpwatch 後, 在 IE 的瀏覽器列就會出現如下圖所示的按鈕






如果按下 httpwatch 的按鈕, 瀏覽器下方就會出現 httpwatch 的相關
工具, 如下圖











先在瀏覽器的網址列輸入你想要觀察的網址, 這裡我用
http://www.digitimes.com.tw 為例
接下來在下方 httpwatch 工具中, 按下 Record(見上圖紅色按鈕)
然後才在網頁中輸入要查詢的關鍵字
接下來就可以看到相關執行程式名稱及相關 POST 的變數
名稱及值, 如下圖所示










此例中, 他新聞搜尋的功能是執行了
http://www.digitimes.com.tw/search/display.asp
並且傳了四個參數 keyword, submit1, sFormDate, sToDate 及
他們的值 SATA, Go!, 2006/8/1,2006/10/31
得到這些參數接下來我們就可以開始使用 curl 用 POST 的方法來抓網頁的資料了
啟始 curl:
$ch = curl_init("http://www.digitimes.com.tw/search/display.asp");
curl_setopt($ch, CURLOPT_POST, 1); 如此才能使用 post 的 方法來
curl_setopt($ch, CURLOPT_POSTFIELDS,
"keyword=SATA
&submit1=Go!&sFormDate=2006/8/1&sToDate=2006/10/31");

用 CURLOPT_POSTFIELDS 此參數來給定要用 POST 傳的參數
注意: 參數跟參數間要用 "&" 來連接
最後再用 curl_exec($ch); 執行即可

標籤: ,

0 Comments:

張貼留言

<< Home