2012-11-21 162 views
1

我有一個shell腳本,用於拉動遊戲網站上列出的玩家數量。我拿了這個數字,並添加了一個時間戳,並把它放在谷歌電子表格中,這樣我就可以隨着時間的推移繪製一張圖來跟蹤數據。唯一的問題是運行它,我需要保持我的電腦,我會猜測你可以用某種谷歌腳本來做到這一點,但我不知道如何開始這樣做。谷歌應用程序腳本從網站上拉文本

我使用的shell腳本是:

wget --output-document=- http://runescape.com/title.ws 2>/dev/null \ 
| grep PlayerCount \ 
| head -1l \ 
| sed 's/^[^>]*>//' \ 
| sed "s/currently.*$/$(date '+%m\/%d\/%Y %H:%M:%S')/" \ 
| cut -d">" -f 3,4 \ 
| sed 's/<\/span>//' \ 
| sed 's/,//' \ 
| awk '{printf "%s %s,%s,%s\n", $3, $4, $1, $2}' 

輸出例如:11/21/2012 01:02:22,52833,people

我想要的東西是有它的自動拉這個數字,並將其存儲在一個細胞每2分鐘的例子。但我不確定它有多容易或從哪裏開始。

然後,它看起來像http://i.imgur.com/xRpNy.png

回答

4

如果您在執行此操作時遇到配額限制,可能會有這種情況。但這是我該怎麼做的。

function pullRuneScape() { 
    var page = UrlFetchApp.fetch('http://runescape.com/title.ws').getContentText(); 
    var number = page.match(/PlayerCount.*>([0-9,]+)</)[1]; 
    SpreadsheetApp.getActive().getSheetByName('Sheet1').appendRow([new Date(), number]); 
} 

打開Goog​​le Spreadsheet,然後點擊菜單Tools> Script Editor,粘貼上面的代碼並保存。仍然在腳本編輯器中,單擊資源>當前腳本的觸發器。然後將此函數設置爲在時間觸發器上運行。

+0

我喜歡這個。現在將測試它,看看我是否有任何問題,但目前爲止我沒有。這是寫什麼語言,我將如何瞭解這些功能?你知道配額限制是什麼嗎? – Aaron

+1

@Aaron您可以開始學習Google Apps腳本@ https://developers.google.com/apps-script/ Google Apps使用在Google服務器上運行的Javascript –

+0

@Henrique Abreu這是否適合軍事時間?因爲它可能搞砸了圖形,因爲我無法在那裏製作帶有AM和PM的線條圖。 – Aaron

1

您可以使用網址抓取應用程序在Google Apps腳本來抓取網頁的內容,並可以使用正則表達式來獲得玩家數量進行解析。 這是我嘗試過的一些小代碼。它使用YQL和Apps腳本來避免正則表達式解析。

function retreiveOnlineUsers(){ 
    var query = 'select * from html where url="http://runescape.com/title.ws" and xpath=\'//div[@id="PlayerCount"]/p[1]/span\'&format=json'; 
    var yql = 'http://query.yahooapis.com/v1/public/yql?q='; 
    var queryURL = yql+encodeURI(query); 
    var jsonString = UrlFetchApp.fetch(queryURL).getContentText(); 
    var json = Utilities.jsonParse(jsonString); 
    var palyerCount = json.query.results.span; 
    var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheets()[0]; 
    l = sheet.getLastRow(); 
    sheet.getRange(l+1, 1, 1, 3).setValues([[new Date(), palyerCount, 'people']]); 
} 

參考文獻:

此腳本測試,工作正常。以下是使用電子表格進行操作的步驟。

  1. 創建一個新的空表格,並通過單擊「工具」菜單上的名稱
  2. 打開腳本編輯器保存它,然後選擇「腳本編輯器...」。
  3. 複製並粘貼下面的腳本
  4. 保存腳本
  5. 選擇的功能組合框的功能retreiveOnlineUsers,然後單擊「運行」,這將在您的工作表填充行。
  6. 現在您可以安排此腳本運行通過time driven triggers
+0

我仍然試圖找出如何設置你的,如果你看到這一點,並會願意給一些會很好的步驟。如果我知道了,我會更新我的消息。 – Aaron

+1

我已經更新了我的答案。我不能再簡單一些,請花點時間閱讀教程以瞭解基礎知識。 –

+0

感謝您的更新。什麼是:「它使用YQL與Apps腳本來避免正則表達式解析。」 ? – Aaron

相關問題