Javascript 如何使用谷歌应用程序脚本缩小网络抓取的结果范围?
我的目标是清理网站: 我特别希望得到SP500 PE编号,即39.57(在撰写本文时)我需要这个号码是39,57,而不是39.57。 这是我的代码:Javascript 如何使用谷歌应用程序脚本缩小网络抓取的结果范围?,javascript,google-apps-script,web-scraping,google-sheets,Javascript,Google Apps Script,Web Scraping,Google Sheets,我的目标是清理网站: 我特别希望得到SP500 PE编号,即39.57(在撰写本文时)我需要这个号码是39,57,而不是39.57。 这是我的代码: function webScraper() { var webURL = "https://www.multpl.com/s-p-500-pe-ratio"; var response = UrlFetchApp.fetch(webURL); var $ = Cheerio.load(response.getContent
function webScraper() {
var webURL = "https://www.multpl.com/s-p-500-pe-ratio";
var response = UrlFetchApp.fetch(webURL);
var $ = Cheerio.load(response.getContentText());
var itemsOfInterest = $('.info-left').first().text().trim();
Logger.log(itemsOfInterest)
return itemsOfInterest
}
问题:
我的代码可以工作,但它给了我太多的信息。基本上我需要缩小范围。我还需要将39.57转换为39,57
下面是代码提供给我的所有信息:
当前
标准普尔500指数市盈率:
39.57
+0.15
(0.39%)
美国东部时间2月5日星期五下午4:00
意思是:
15.88
中位数:
14.84
最小值:
5.31
(1917年12月)
最大值:
123.73
(2009年5月)
市盈率,基于后续12个月的“as”
“报告”
收入。当前市盈率是根据最新公布的收益和当前市场情况进行估算的 价格 资料来源: 罗伯特·希勒(Robert Shiller)和他的书《标准普尔500指数历史市盈率的非理性繁荣》 另见 希勒市盈率 标准普尔500指数价格与账面价值之比 标准普尔500指数的市盈率 标准普尔500指数收益率 标准普尔500指数收益
经通胀调整的标准普尔500指数我相信你的目标如下
- 您想从
并将URL中检索
https://www.multpl.com/s-p-500-pe-ratio39.57
转换为39.57
39,57
- 您希望使用谷歌应用程序脚本实现这一点
- 当我看到URL的HTML数据时,我注意到JSON对象中包含了
的数量。我认为当使用它时,您期望的值可能可以简单地检索39.57
- 此修改后的脚本适用于您当前的
。因此,当您将此脚本用于其他URL时,可能无法检索该值。请小心这个URLhttps://www.multpl.com/s-p-500-pe-ratio
其他网站。我为此道歉。如果上述脚本不能直接用于您的其他网站
,我认为需要对HTML数据进行分析。届时,请将您的新问题作为新问题发布。这样,它将帮助包括我在内的用户想出解决方案。如果你能合作解决你的新问题,我很高兴。你能合作解决你的新问题吗?我会努力澄清我的后续问题。在我原始代码中得到的信息中,它给了我市盈率(39.57)和许多其他信息。这些信息中有平均值(15.88)。你的代码把它缩小到市盈率(39.57),这正是我想要的。但是,如果我想检索平均值(15.88),我将如何修改代码?@mancoder感谢您的回复。我不得不为我糟糕的英语水平道歉。不幸的是,我无法理解您的新问题与其他网站
之间的关系。但我愿意支持你。所以当我能正确理解你的新问题时。我想试着想出解决办法。很抱歉,我不能很快解决您的新问题。这是因为我的英语水平差。我再次为此道歉。
function webScraper() {
var webURL = "https://www.multpl.com/s-p-500-pe-ratio";
var response = UrlFetchApp.fetch(webURL);
var str = response.getContentText().match(/var d =([\s\S\w]+?);/);
if (str && str.length > 0) {
var obj = JSON.parse(str[1].trim());
var res = obj.endLabel[0].replace(".", ","); // If you use obj.endLabel[0] , "39.57" is returned.
console.log(res) // When this log is checked, "39,57" can be seen.
return res;
}
return "No value.";
}