[英]Google apps script to pull text from website
例如,我有一個Shell腳本來提取游戲網站上列出的玩家數量。 我拿了這個數字,並添加了一個時間戳記,並將其放在Google電子表格中,這樣我就可以隨時間繪制圖表來跟蹤數據。 唯一的問題是運行該程序,我需要保持計算機開機,我猜您可以使用某種Google腳本來執行此操作,但我不知道如何開始執行該操作。
我使用的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分鍾存儲在一個單元格中。 但是我不確定這有多容易或從哪里開始。
如果這樣做時可能會遇到配額限制。 但是,這就是我要做的。
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]);
}
打開一個Google Spreadsheet,然后單擊菜單Tools> Script Editor,粘貼上面的代碼並保存。 仍在腳本編輯器上,單擊資源>當前腳本的觸發器。 然后將此功能設置為在時間驅動的觸發器上運行。
您可以在Apps腳本中使用UrlFetch App來獲取頁面的內容,可以使用正則表達式進行解析以獲取播放器計數。 這是我嘗試過的一些代碼。 它結合使用YQL和Apps Script來避免正則表達式解析。
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']]);
}
參考文獻:
該腳本已經過測試,可以正常工作。 以下是使其與電子表格配合使用的步驟。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.