首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >IMPORTHTML()在此网页结构中不起作用

IMPORTHTML()在此网页结构中不起作用
EN

Stack Overflow用户
提问于 2021-01-16 16:11:43
回答 1查看 977关注 0票数 1

我想从HTML页面中的表中导入数据。我将Google的例子IMPORTHTML("http://en.wikipedia.org/wiki/Demographics_of_India","table",4)应用到我的案例中,改变了各种参数,但它毕竟不起作用。

有人能告诉我下面的公式有什么问题吗?

代码语言:javascript
复制
=IMPORTHTML("https://s.cafef.vn/screener.aspx#data","table",1)

我想从https://s.cafef.vn/screener.aspx#data导入表,表的前2行如下所示:

1 C ng ty CổPh n 32 UpCom -15.42 212.16 -100.00 6.91 4.52 0.00 31.20 cổần Nhựa An Phát Xanh AAA HSX 0.00 426.19 -5.24 1.39 1.39 0.78 0.00 .

我试着把表的索引从1提高到30,但它们都不起作用

代码语言:javascript
复制
=IMPORTHTML("https://s.cafef.vn/screener.aspx#data","table",2)
=IMPORTHTML("https://s.cafef.vn/screener.aspx#data","table",3)
...
=IMPORTHTML("https://s.cafef.vn/screener.aspx#data","table",30)

非常感谢曹先生

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-17 01:35:17

我相信你的目标如下。

  • 您希望从https://s.cafef.vn/screener.aspx#data的URL中检索表。

问题和解决办法:

当我看到URL的HTML时,表似乎是由Javascript创建的。在这种情况下,IMPORTHTML无法直接检索表。评论已经提到了这一点。

幸运的是,当我看到HTML时,我注意到用于创建由Javascript创建的表被设置为一个JSON数据。在本例中,我认为当检索JSON数据时,可以使用Google脚本检索表的值。在这个答案中,作为一种解决办法,我建议使用Google脚本作为自定义函数来实现您的目标。

示例脚本:

请将以下脚本复制并粘贴到电子表格的脚本编辑器中。并且,请将=SAMPLE("https://s.cafef.vn/screener.aspx#data")的自定义公式放到单元格中。这样,就可以检索和解析HTML数据,然后从JSON数据中检索表。

代码语言:javascript
复制
function SAMPLE(url) {
  const res = UrlFetchApp.fetch(url, {muteHttpExceptions: true});
  const html = res.getContentText().match(/var jsonData \=([\S\s\w]+\}\])/);
  if (!html) return "No tables. Please confirm URL again.";
  const table = JSON.parse(html[1].replace(/\n/g, ""));
  const header = ["", "FullName", "Symbol", "CenterName", "ChangePrice", "VonHoa", "ChangeVolume", "EPS", "PE", "Beta", "Price"];
  return table.reduce((ar, e, i) => {
    const temp = header.map(f => f == "" ? i + 1 : e[f]);
    ar.push(temp);
    return ar;
  }, [header]);
}

结果:

当运行上述脚本时,将获得以下结果。

注意:

  • 在这个示例脚本中,使用了const header = ["", "FullName", "Symbol", "CenterName", "ChangePrice", "VonHoa", "ChangeVolume", "EPS", "PE", "Beta", "Price"];的头。这是要检索的表。这些是JSON数据的关键。
  • 此示例脚本可用于https://s.cafef.vn/screener.aspx#data URL的当前HTML。因此,当您更改URL并更新站点并更改HTML结构时,此脚本可能无法使用。所以请小心点。

参考文献:

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65751703

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档