输入时
#N/A Imported content is empty
在我的Google表格中,我得到:=IMPORTXML("http://www.ilgiornale.it/autore/franco-battaglia.html","*")
。
但是,当我输入时:
h2
我得到了一些内容,因此我可以假定对该页面的访问没有被阻止。
毫无疑问,该页面包含几个didDeselectRowAt
标签。
那是什么问题?
答案 0 :(得分:1)
=IMPORTXML("http://www.ilgiornale.it/autore/franco-battaglia.html","//h2")
返回#N/A Imported content is empty
。=IMPORTXML("http://www.ilgiornale.it/autore/franco-battaglia.html","*")
返回内容。如果我的理解正确,那么这个答案如何?
当我看到http://www.ilgiornale.it/autore/franco-battaglia.html
的HTML数据时,我注意到它的错误之处。如下。
window.jQuery || document.write("<script src='/sites/all/modules/jquery_update/replace/jquery/jquery.min.js'>\x3C/script>")
在这种情况下,脚本标签不会像\x3C/script>
一样关闭。似乎IMPORTXML检索此行时,脚本选项卡未关闭。我可以确认将\x3C
转换为<
时,=IMPORTXML("http://www.ilgiornale.it/autore/franco-battaglia.html","//h2")
正确返回了h2
标签的值。
通过这种方式,似乎发生了=IMPORTXML("http://www.ilgiornale.it/autore/franco-battaglia.html","//h2")
返回#N/A Imported content is empty
的问题。
关于=IMPORTXML("http://www.ilgiornale.it/autore/franco-battaglia.html","*")
返回内容的原因,当我输入此公式时,找不到脚本选项卡的值。从这种情况来看,我认为脚本标签可能有问题。因此,我可以找到上述错误点。我可以确认,当\x3C
转换为<
时,=IMPORTXML("http://www.ilgiornale.it/autore/franco-battaglia.html","*")
返回的值包括脚本标记的值。
为了避免上述问题,需要将\x3C
修改为<
。那么以下解决方法呢?在这些变通办法中,我使用了Google Apps脚本。请考虑这些变通办法只是几种变通办法中的两个。
在这种模式下,首先,从URL下载HTML数据,然后修改错误的点。然后,将修改后的HTML数据创建为文件,并共享该文件。并检索文件的URL。使用该URL检索值。
示例脚本:function myFunction() {
var url = "http://www.ilgiornale.it/autore/franco-battaglia.html";
var data = UrlFetchApp.fetch(url).getContentText().replace(/\\x3C/g, "<");
var file = DriveApp.createFile("htmlData.html", data, MimeType.HTML);
file.setSharing(DriveApp.Access.ANYONE_WITH_LINK, DriveApp.Permission.VIEW);
var endpoint = "https://drive.google.com/uc?id=" + file.getId() + "&export=download";
Logger.log(endpoint)
}
myFunction()
函数并检索端点。作为测试用例,请将端点放入单元格“ A1”。并将=IMPORTXML(A1,"//h2")
放入单元格“ A2”。这样,就可以检索值。在这种模式下,通过解析HTML数据并将其放置到活动电子表格中,可以直接检索标记h2
的值。
function myFunction() {
var url = "http://www.ilgiornale.it/autore/franco-battaglia.html";
var data = UrlFetchApp.fetch(url).getContentText().match(/<h2[\s\S]+?<\/h2>/g);
var xml = XmlService.parse("<temp>" + data.join("") + "</temp>");
var h2Values = xml.getRootElement().getChildren("h2").map(function(e) {return [e.getValue()]});
var sheet = SpreadsheetApp.getActiveSheet();
sheet.getRange(sheet.getLastRow() + 1, 1, h2Values.length, 1).setValues(h2Values);
Logger.log(h2Values)
}
h2
的值将直接放置到活动电子表格中。如果我误解了您的问题,而这不是您想要的方向,我深表歉意。