- Вы хотите узнать причину следующей ситуации.
Если мое понимание верно, как насчетэтот ответ?
Проблема:
Когда я увидел данные HTML http://www.ilgiornale.it/autore/franco-battaglia.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","*")
возвращает содержимое, когда я поместил эту формулу, я не смог найти значения на вкладке сценария.Из этой ситуации я подумал, что у тега script может быть проблема.Таким образом, я мог найти вышеупомянутую неправильную точку.Я мог бы подтвердить, что когда \x3C
преобразуется в <
, =IMPORTXML("http://www.ilgiornale.it/autore/franco-battaglia.html","*")
возвращает значения, включая значения тега сценария.
Обходные пути:
Чтобы избежать вышеуказанной проблемы,требуется изменить \x3C
на <
.Так как насчет следующих обходных путей?В этих обходных путях я использовал Google Apps Script.Пожалуйста, подумайте об этих обходных путях как о двух из нескольких обходных путей.
Шаблон 1:
В этом шаблоне сначала загрузите данные HTML с URL-адреса и измените неправильную точку.Затем измененные данные 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")
в ячейку "А2".Посредством этого можно извлечь значения.
Шаблон 2:
В этом шаблоне значения тега h2
напрямую извлекаются путем анализа данных HTML и помещаются в нихактивная электронная таблица.
Пример сценария:
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
напрямую помещаются в активную электронную таблицу.
Список литературы:
Если я неправильно понял ваш вопрос, и это былоне то направление, которое вы хотите, прошу прощения.