當我嘗試使用以下基于谷歌應用程式構建的腳本Kerri Hughes從該網頁Info中抓取時,我總是得到結果。該名稱是靜態的,可在頁面源代碼 (ctrl u) 中使用,但腳本仍然無法獲取它。我該如何解決?
function myFunction() {
var options = {
"method" : "GET",
"headers" : {
"User-Agent": "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.150 Safari/537.36",
}
};
var webURL = "https://pubs.acs.org/doi/abs/10.1021/acschembio.1c00993";
var response = UrlFetchApp.fetch(webURL,options);
var $ = Cheerio.load(response.getContentText());
var sName = $("span.hlFld-ContribAuthor").first().text();
console.log(sName);
}
uj5u.com熱心網友回復:
我猜想在您的 URL 中,可能需要使用 cookie。所以,當你的腳本被修改時,它變成如下。
修改后的腳本。
function myFunction() {
var webURL = "https://pubs.acs.org/doi/abs/10.1021/acschembio.1c00993";
var res = UrlFetchApp.fetch(webURL, { followRedirects: false });
var options = { headers: { "Cookie": JSON.stringify(res.getAllHeaders()["Set-Cookie"]) } };
var response = UrlFetchApp.fetch(webURL, options);
var $ = Cheerio.load(response.getContentText());
var sName = $("span.hlFld-ContribAuthor").first().text();
console.log(sName); // Kerri Hughes
}
結果:
當我測驗上述腳本時,我確認Kerri Hughes了日志中的值。
筆記:
作為另一種修改,您還可以使用以下修改。在此修改中,使用了從第一個請求中檢索到的重定向 URL 和 cookie。這樣看來,回應速度似乎有點快。得到相同的結果。
function myFunction() { var webURL = "https://pubs.acs.org/doi/abs/10.1021/acschembio.1c00993"; var res = UrlFetchApp.fetch(webURL, { followRedirects: false }); var resHead = res.getHeaders(); var options = { headers: { "Cookie": resHead["Set-Cookie"] } }; var response = UrlFetchApp.fetch(resHead["Location"], options); var $ = Cheerio.load(response.getContentText()); var sName = $("span.hlFld-ContribAuthor").first().text(); console.log(sName); // Kerri Hughes }
參考:
- 獲取(網址,引數)
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/438818.html
上一篇:谷歌表格中的查詢故障
