Как мне извлечь тело из этого оператора извлечения?Я могу успешно получить URL, но я ищу некоторые конкретные элементы HTML в наборе результатов.Когда я запускаю скрипт в JSFiddle, он предоставляет результаты, но он останавливается, потому что HTML сформирован неправильно и не может быть проанализирован DomParser.Я хотел бы, чтобы результаты возвращались в виде строки, чтобы я мог использовать регулярные выражения для анализа набора результатов.
Примечание. Правительственный сайт имеет неработающий API с июня прошлого года.Я пытаюсь альтернативными способами получить доступ к данным, которые раньше предоставлялись через API.
Мне удалось успешно проанализировать это с помощью Google Apps Script, но я хочу, чтобы это работало в одиночку, HTMLформа с использованием JavaScript
fetch('https://safer.fmcsa.dot.gov/query.asp? searchtype=ANY&query_type=queryCarrierSnapshot&query_param=MC_MX&query_string=146892', {
mode: 'no-cors' // 'cors' by default
})
.then(function(response) {
// When the page is loaded convert it to text
return response.text()
})
.then(function(htmlString) {
// Initialize the DOM parser
var parser = new DOMParser();
// Parse the text
var doc = parser.parseFromString(htmlString, "text/xml");
// You can now even select part of that html as you would in the regular DOM
// Example:
// var docArticle = doc.querySelector('article').innerHTML;
console.log(doc);
})
.catch(function(err) {
console.log('Failed to fetch page: ', err);
});
Это JSFiddle: https://jsfiddle.net/6b9s1Lwz/ Возвращает ошибку синтаксического анализа.
Это мой рабочий код скрипта приложения: он отлично работает, пытается получитьэто работать в JavaScript это моя задача.
function getSaferData() {
var saferUrl = 'https://safer.fmcsa.dot.gov/query.asp?searchtype=ANY&query_type=queryCarrierSnapshot&query_param=MC_MX&query_string=';
var MCNum =146892;
var fetchUrl =saferUrl+MCNum;
var response = UrlFetchApp.fetch(fetchUrl);
var result = response.getContentText().match(/<B>(.*?)<\/B>/g);
var carrierName = result[1].replace(/<\/?B>/g,'')
Logger.log(result + " " + result.length);
console.log(carrierName);
var sheet = SpreadsheetApp.getActiveSheet();
sheet.getRange(1,1).setValue(carrierName);
}