我正在嘗試從發出帶有適當引數的 get http 請求的網頁中獲取 json 回應,但我得到403 Forbidden了回應。當我在 python 中做同樣的事情時,我會得到相應的回應。但是,當我采用以下方法時,事情出錯了:
function capterraScraper() {
var Url = 'https://www.capterra.com/directoryPage/rest/v1/category';
var params = {
'htmlName': '360-degree-feedback-software',
'rbr': 'false',
'countryCode': 'BD'
};
var options = {
'method' : 'GET',
'params' : params,
'headers' : {
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36'
}
};
var response = UrlFetchApp.fetch(Url, options);
console.log(JSON.parse(response));
}
如何讓腳本產生 json 回應?
uj5u.com熱心網友回復:
從您的腳本中,我認為這params可能用作查詢引數。我測驗的時候,確認可以獲取到JSON資料。但是當我使用 Google Apps Script 測驗 URL 時,我也確認了403 Forbidden. 幸運的是,當我使用Javascript訪問URL時,可以獲得JSON資料。因此,在這種情況下,作為一種變通方法,我想提出一種在 Google Apps Script 端使用 JSON 資料的變通方法。
解決方法的流程如下。
- 打開一個對話框。
- 使用 Javascript 檢索 JSON 資料,并將資料回傳到 Google Apps Script 端。
這樣,您就可以在 Google Apps Script 中使用 JSON 資料。
示例腳本:
請將以下腳本復制粘貼到谷歌電子表格的腳本編輯器中,并main()在腳本編輯器中運行。這樣,在 Google Spreadsheet 上打開一個對話框并檢索 JSON 資料,并將資料回傳到 Google Apps Script 端。
function main(obj) {
if (!obj) {
var html = HtmlService.createHtmlOutput(`<script>fetch('https://www.capterra.com/directoryPage/rest/v1/category?' (new URLSearchParams({htmlName: '360-degree-feedback-software',rbr: 'false',countryCode: 'BD'}))).then(response => response.json()).then(res => google.script.run.withSuccessHandler(google.script.host.close).main(res)).catch(err => console.log(err));</script>`);
SpreadsheetApp.getUi().showModalDialog(html, "sample");
return;
}
console.log(obj)
DriveApp.createFile("sample.txt", JSON.stringify(obj));
}
運行此示例腳本時,檢索到的 JSON 資料將保存在根檔案夾中的檔案中。當然,您可以將資料用作
obj.這個腳本中的Javascript如下。
<script> fetch('https://www.capterra.com/directoryPage/rest/v1/category?' (new URLSearchParams({htmlName: '360-degree-feedback-software',rbr: 'false',countryCode: 'BD'}))) .then(response => response.json()) .then(res => google.script.run.withSuccessHandler(google.script.host.close).main(res)) .catch(err => console.log(err)); </script>
筆記:
- 此解決方法使用 Google 電子表格上的對話框。所以,不幸的是,在這種情況下,即使從外部運行此腳本并使用時間驅動觸發器,也無法使用該腳本。請注意這一點。
參考:
- Google Workspace 檔案中的對話框和邊欄
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/387386.html
標籤:谷歌应用程序脚本 网页抓取 谷歌表格 参数 http-status-code-403
上一篇:如何使用Scrapy從該元素中獲取文本?::文字無效
下一篇:抓取網站,不能嵌套同名資料
