Как извлечь тело HTML из выборки? - PullRequest
1 голос
/ 08 мая 2019

Как мне извлечь тело из этого оператора извлечения?Я могу успешно получить 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);  
}
...