Я хочу получить данные со следующего сайта: https://www.portaldefinancas.com/framecdi.htm
Я использую листы Google с функцией IMPORTXML. Я немного узнал о xpath и считаю, что моя проблема не в синтаксисе.
Проблема в том, что кажется, что этот веб-сайт не хочет, чтобы люди получали с него данные.
Фрагмент кода, который мне нужен из исходного кода, следующий:
... </fieldset><div class="column50"><script src="js-gen-ctb/tb-tb.js"></script>
Taxas CDI - Mensal - Anual - Acumulada - 2021
<script src="js-tx-ctb/th-cdib.js"></script>
<script src="js-tx/cdib-2021.js"></script> ...
Как видите, в тот момент, когда данные должны появиться, есть много скриптов. Когда я обращаюсь к этим сценариям, единственное, что находится внутри них, - это фрагмент кода document.write, например:
document.write(""),document.write('<table cellspacing="1" cellpadding="3" id="tb"><caption><p class="cp">');
Единственная функция этих скриптов - группировать исходный код по множеству частей в разных файлах.
Таким образом, я не могу получить доступ к данным, потому что функция IMPORTXML возвращает ошибку #NA, поскольку данные находятся за пределами исходного кода.
Есть ли способ получить данные с помощью функции IMPORTXML в этом случае? как я могу получить доступ к данным внутри файла .js с помощью этой формулы?
Спасибо
Данные могут быть получены путем анализа содержимого таблицы html в файлах js следующим образом
function getTaxas(url) {
var source = UrlFetchApp.fetch(url).getContentText()
source = source.split('document')[2]
var table = '<table><tr><td' + source.match(/(?<=td).*(?=td)/g) + 'td></tr></table>'
var doc = XmlService.parse(table);
var rows = doc.getDescendants().filter(function(c) {
var element = c.asElement();
return element && element.getName() == "tr";
});
var data = rows.slice(0).map(function(row) {
return row.getChildren("td").map(function(cell) {
return cell.getValue();
});
});
return data;
}
https://docs.google.com/spreadsheets/d/18yhDYr91ORrofV20FMWYmYnwwnGK0QaQguG9uLdP5co/copy
Эта статья взята из Интернета, укажите источник при перепечатке.
Если есть какие-либо нарушения, пожалуйста, свяжитесь с[email protected] Удалить.
я говорю два предложения