使用Google Script与Cheerio抓取CoinDesk比特币价格失败,求帮助
解决Google Script提取CoinDesk比特币实时价格失败的问题
问题描述
需要从CoinDesk比特币价格页面提取class为typography__StyledTypography-owin6q-0 fZpnIj的span标签内的实时价格(示例值为$23,073.15),但以下Google Script代码执行失败:
var URL = "https://www.coindesk.com/price/bitcoin/"; var response = UrlFetchApp.fetch(URL); var $ = Cheerio.load(response.getContentText()); var itemsOfInterest = $('span.typography__StyledTypography-owin6q-0 fZpnIj').text();
问题原因及修正方案
1. CSS选择器错误
原代码里的选择器写法有误:当元素同时拥有多个class时,CSS选择器需要用.连接不同class,空格代表「后代元素」,而非同一元素的多class标识。正确的选择器应该是:
$('span.typography__StyledTypography-owin6q-0.fZpnIj').text()
2. 反爬拦截问题
CoinDesk可能会拦截UrlFetchApp的默认请求(默认User-Agent为非浏览器标识),需要添加请求头模拟浏览器访问:
修正后的完整代码:
function getBitcoinPrice() { var URL = "https://www.coindesk.com/price/bitcoin/"; var options = { headers: { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36" } }; var response = UrlFetchApp.fetch(URL, options); var $ = Cheerio.load(response.getContentText()); var bitcoinPrice = $('span.typography__StyledTypography-owin6q-0.fZpnIj').text(); Logger.log(bitcoinPrice); // 输出价格到日志 return bitcoinPrice; }
3. 额外注意事项
- 需先在Google Script中启用Cheerio库:通过「资源」→「库」添加,库ID为
1ReeQ6WO8kKNxoaA_O0XEQ589cIrRvEBA9qcWpNqdOP17i47u6N9M5Xh0 - 若后续网站前端更新导致class名变更,需重新检查页面元素的class属性并更新选择器
内容的提问来源于stack exchange,提问作者pila pila8
相关产品推荐
相关产品推荐

