我正在爲website開發移動應用程序(適用於iOS 5.0及以上版本),用戶可以直接從其着陸頁查看某些數據。用戶可以通過選擇特定選項(即位置和/或日期)來細化結果。他們不提供任何Web服務調用,也不允許我們訪問他們的數據庫。所以我唯一的收集數據的方法是直接從網站上'刮'這個網站。如何從iOS的JavaScript頁面中抓取數據?
我的問題是,我不知道如何使用戶可以通過手機的http請求進行的更改。例如下面的網站:
可以從網站拉,並保存爲一個字符串,用下面的命令
NSString *html = [NSString stringWithContentsOfURL:urlrequest encoding:NSUTF8StringEncoding error:&err];
我能分開的相關數據:
// I decided to add the script function name in case anyone wanted to look for themselves
<script type="text/javascript" language="Javascript">
//<![CDATA[
function loadData(){
var winMsgTitle = "Date: 04/11/2012";
// this is the actual data I'm concerned with:
gLatLong = new GLatLng(31.59019444444444, -110.50655555555555);
tmpMapIcon = new MapIcon("0_0", 21, 15);
marker = createMarker(gLatLong, 0.0, createInfoWinMsg(winMsgTitle, ".00", ".84", "5711", "2012", "", "07:00"), tmpMapIcon);
map.addOverlay(marker);
point = null;marker = null;
gLatLong = new GLatLng(32.2938260182, -110.7896411419);
tmpMapIcon = new MapIcon("0_0", 21, 15);
marker = createMarker(gLatLong, 0.0, createInfoWinMsg(winMsgTitle, ".00", "1.00", "1254", "2012", "", "07:00"), tmpMapIcon);
map.addOverlay(marker);
point = null;marker = null;
gLatLong = new GLatLng(33.5966853633, -112.1744066477);
tmpMapIcon = new MapIcon("0_0", 21, 15);
marker = createMarker(gLatLong, 0.0, createInfoWinMsg(winMsgTitle, ".00", ".70", "256", "2012", "", "07:00"), tmpMapIcon);
map.addOverlay(marker);
point = null;marker = null;
注:顯然有更多的點,這只是剪斷它
爲了獲得另一個位置或日期,我必須通過網站手動選擇並選擇右側窗格中的選項。我的問題是,我如何通過objective-c以編程方式進行這些更改?
我能夠發現該網站有一個「loadData」函數,我可以從mozilla的web控制檯調用,該控制檯包含我需要的全部內容。是否有可能只是調用該函數? – KronoS 2012-04-13 05:12:29
我想這可能會起作用。爲什麼不直接寫和測試呢? – 2012-04-13 06:10:48
我並不確定如何大聲笑。 – KronoS 2012-04-13 06:32:39