如何从提取中提取HTML的正文?

时间:2019-05-08 14:26:02

标签: javascript html html-parsing fetch

如何从此fetch语句中提取主体?我可以成功获取URL,但是我正在结果集中寻找一些特定的HTML元素。当我在JSFiddle中运行脚本时,它会提供结果,但是会停止,因为html的格式不正确并且无法被DomParser解析。我希望将结果作为字符串返回,以便可以使用正则表达式来解析结果集。

注意:自去年6月以来,政府站点的API已损坏。我正在尝试其他方法来获取以前通过API提供的数据。

我已经能够使用Google Apps脚本成功解析此内容,但是我希望它可以使用JavaScript以独立的html形式工作

 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/ 返回解析错误。

这是我正在使用的Apps脚本代码:它工作得很好,试图使其在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);  
}

0 个答案:

没有答案