2016-07-30 250 views
2

我試圖從使用谷歌Apps腳本下面的示例網頁中提取數據,刮痧:網站與谷歌Apps腳本

URL = http://www.premierleague.com/players/2064/Wayne-Rooney/stats?se=54

使用,UrlFetchApp.Fetch(URL)

問題是,當我使用UrlFetchApp.Fetch(url)來做到這一點,我沒有得到由網址中'se'參數定義的頁面信息。相反,我收到以下URL的信息,因爲它看起來像'se = 54'頁異步加載: http://www.premierleague.com/players/2064/Wayne-Rooney/stats

是否有任何方法可以通過其他方式傳遞參數'se'?我正在研究這個功能,它允許指定「選項」,因爲它們被引用,但是關於該主題的文檔非常有限。

任何幫助將不勝感激。非常感謝

湯米

回答

3

去那個網站在瀏覽器中,打開開發工具(F12或CTR-Shift-I鍵)。點擊網絡標籤,然後用F5重新加載頁面。 將出現請求列表。在列表底部,您應該看到獲取信息的異步​​請求。這些請求從footballapi.pulselive.com獲取json形式的數據。 你可以在應用程序腳本中做同樣的事情。但是您必須發送正確的「原始」標題行或您的請求被拒絕。 這裏是一個例子。

function fetchData() { 
    var url = "http://footballapi.pulselive.com/football/stats/player/2064?comps=1"; 
    var options = { 
    "headers": { 
     "Origin": "http://www.premierleague.com" 
    } 
    } 
    var json = JSON.parse(UrlFetchApp.fetch(url, options).getContentText()); 
    for(var i = 0; i < json.stats.length; i++) { 
    if(json.stats[i].name === "goals") Logger.log(json.stats[i]); 
    } 
} 
+0

謝謝!這完全滿足了我的要求,並且讓我的眼睛開啓了一個可能性的世界,以及您可以從瀏覽器中獲得的洞察力,我不知道它是否存在。 – Tommy

1

請嘗試以下解決方案:

var options = 
{ 
    "method" : "GET", 
    "followRedirects" : true, 
    "muteHttpExceptions": true 
}; 

var result = UrlFetchApp.fetch(url, options);