簡體   English   中英

Google Apps腳本從網站提取文本

[英]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分鍾存儲在一個單元格中。 但是我不確定這有多容易或從哪里開始。

然后看起來像http://i.imgur.com/xRpNy.png

如果這樣做時可能會遇到配額限制。 但是,這就是我要做的。

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']]);
}

參考文獻:

該腳本已經過測試,可以正常工作。 以下是使其與電子表格配合使用的步驟。

  1. 創建一個新的空電子表格並使用名稱保存
  2. 通過單擊“工具”菜單打開腳本編輯器,然后選擇“腳本編輯器...”。
  3. 復制並粘貼以下腳本
  4. 保存腳本
  5. 在功能組合框中選擇功能retreiveOnlineUsers,然后單擊“運行”,這將在工作表中填充一行。
  6. 現在,您可以安排此腳本運行在時間驅動的觸發器中

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM