IMPORTHTML()在此网页结构中不起作用 [英] IMPORTHTML() doesn't work in this webpage structure
本文介绍了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屋!
查看全文