Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/444.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用谷歌应用程序脚本缩小网络抓取的结果范围?_Javascript_Google Apps Script_Web Scraping_Google Sheets - Fatal编程技术网

Javascript 如何使用谷歌应用程序脚本缩小网络抓取的结果范围?

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

我的目标是清理网站:

我特别希望得到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.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中检索
    39.57
    https://www.multpl.com/s-p-500-pe-ratio
    并将
    39.57
    转换为
    39,57
  • 您希望使用谷歌应用程序脚本实现这一点
修改点:
  • 当我看到URL的HTML数据时,我注意到JSON对象中包含了
    39.57
    的数量。我认为当使用它时,您期望的值可能可以简单地检索
在这个答案中,作为一种解决方法,我建议从HTML数据中的JSON对象检索值。当上述各点反映到脚本中时,它将变成如下所示

修改脚本: 注:
  • 此修改后的脚本适用于您当前的
    URLhttps://www.multpl.com/s-p-500-pe-ratio
    。因此,当您将此脚本用于其他URL时,可能无法检索该值。请小心这个
参考资料:

太好了!它就像一个符咒!是否有可能修改此代码以同时使用它刮取其他网站?是什么让代码找到值“39.57”?假设我想删掉“Mean:15.88”,我该如何修改代码才能做到这一点?@mancoder感谢您的回复。我很高兴你的问题解决了。关于你的新问题,我愿意支持你。但是我不能理解
其他网站
。我为此道歉。如果上述脚本不能直接用于您的
其他网站
,我认为需要对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.";
}