IMPORTHTML()在此网页结构中不起作用 [英] IMPORTHTML() doesn't work in this webpage structure

查看:14
本文介绍了IMPORTHTML()在此网页结构中不起作用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我要从一个HTML页面内的表中导入数据。我将Google的示例IMPORTHTML("http://en.wikipedia.org/wiki/Demographics_of_India","table",4)应用到我的案例中,更改了各种参数,但它最终还是不起作用。

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

=IMPORTHTML("https://s.cafef.vn/screener.aspx#data","table",1)
我要从https://s.cafef.vn/screener.aspx#data导入表 该表的前两行如下所示:

1 Công ty cổphần 32 A32 UpCom-15.42 212.16-100.00 6.91 4.52 0.00 31.20 2 Cáng ty Cổphần NHựa an Phát Xanh AAA HSX 0.00 3,426.19-5.24 1.39 11.09 0.78 0.00 .............

我尝试将表的索引从1提高到30,但都不起作用

=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)

提前感谢您 曹操

推荐答案

我相信您的目标如下。

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

问题和解决方法:

当我看到URL的HTML时,似乎该表是由Java脚本创建的。在这种情况下,IMPORTHTML不能直接检索表。the comment已经提到这一点。

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

示例脚本:

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

function SAMPLE(url) {
  const res = UrlFetchApp.fetch(url, {muteHttpExceptions: true});
  const html = res.getContentText().match(/var jsonData =([Ssw]+}])/);
  if (!html) return "No tables. Please confirm URL again.";
  const table = JSON.parse(html[1].replace(/
/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结构时,此脚本可能无法使用。因此,请注意这一点。

引用:

这篇关于IMPORTHTML()在此网页结构中不起作用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆