2009-04-21 108 views
0

我是一個新手,並嘗試不同的事情每天總是來這裏時,我堅持的東西。捲曲功能選擇從一個選擇框,自動選擇提交

我想用curl和php編寫一個腳本到這個鏈接:http://tools.cisco.com/WWChannels/LOCATR/openBasicSearch.do然後遍歷每個國家的每個頁面,捕獲每個國家每個合作伙伴的列表並將其保存到數據庫。

我沒有想法腳本將如何選擇國家一個接一個地從選擇框,重定向頁面,國家頁面......這是應該做的第一件事情,我們一旦在網頁模式匹配來在遊戲中用於存儲我可以管理的數據庫中的名稱和地址。

問題是我們之前選擇任何一個國家的網址是:: http://tools.cisco.com/WWChannels/LOCATR/BasicSearch.do 我們選擇國家說「印度」的網址是後:http://tools.cisco.com/WWChannels/LOCATR/performBasicSearch.do,還有就是選擇的任何一個國家沒有提及。

我的想法是遍歷HTML頁面,然後在數組中輸入所有國家,然後使用遞歸函數調用特定國家/地區的頁面,但爲此我們需要在遞歸中爲每個國家/地區使用不同的URL功能正確嗎?

請幫

回答

2

您的網址是搞砸了,所以我不能看到你所談論的確切網頁,但什麼是最有可能發生是,當你改變該國的網站製作POST請求 在同一頁中包含country與您選擇的國家名/國家id的值的變量(儘管它可能是別的東西)。如果您在頁面上查看源代碼,您將能夠看到正在傳遞的輸入字段的名稱。一旦你這樣做,同時使您的捲曲請求您可以設置的CURLOPT_POSTFIELDScuRL option,其內容如下所示:

完整數據的HTTP「POST」操作來發布。要發佈文件,請使用@預先指定文件名並使用完整路徑。這可以作爲像「PARA1 = VAL1 & PARA2 = val2的& ...」一個urlencoded的字符串被傳遞或作爲具有字段名作爲值作爲密鑰和字段數據的數組。

所以,牢記這一點,你會做這樣的事情:

$ch = curl_init('http://tools.cisco.com/WWChannels/LO...BasicSearch.do'); 
$ch = curl_setopt($ch, CURLOPT_POSTFIELDS, array('country' => 'India')); 
$ch = curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
$contents = curl_exec($ch); 
curl_close($ch); 

正如我所說的,雖然,國家=>它的印度部分是一個受過教育的猜測,該領域可能是什麼正在通過。你必須檢查HTML以找出你自己。

1

對於自動化/刮,我建議你使用虛擬瀏覽器,如SimpleBrowser。它是SimpleTest的一部分,但您可以單獨使用它。