2015-10-29 3 views
0

Я пытаюсь импортировать данные с веб-страницы html в Matlab. Я столкнулся с функцией getTableFromWeb. Это выглядит довольно круто. Проблема в том, что когда я использую браузер, например Firefox, я могу видеть данные. Но при использовании этой функции он не может найти таблицу. Даже когда я сохраняю html-файл из браузера, он сохраняет код только. Нет данных. Я ничего не знаю о java html-программировании. Но я прочитал много важных вопросов, но я не могу найти ответ на свою проблему. Я использовал Inspect Element в Firefox. Он показывает в Debugger, bootstrap.js и jquery.js и list.html. Я ценю любую помощь.Импорт таблицы из HTML в Matlab

прибудет (»http://laaablaaablaaablaaaab является похож на URL я использую, чтобы увидеть данные, но не идентично.

Заранее спасибо.

<head lang="en"> 
        <meta charset="UTF-8"> 
     <meta name="viewport" content="width=device-width, initial-scale=1"> 
     <title>laablaablaab/title> 
<link rel="stylesheet" href="bower_components/bootstrap/dist/css/bootstrap.css"/> 
<style> 
    .table{ 
     font-size: 8px; 
    } 
</style> 
</head> 
<body> 
<nav class="navbar navbar-default"> 
<div class="container"> 
    <div class="navbar-header"> 
     <a class="navbar-brand" href="#"> 

     <ul class="nav navbar-nav"> 
      <li><a href="index.html">Home</a></li> 
      <li><a href="register.html">Register name</a></li> 
      <li><a href="guide.html">Guide</a></li> 
     </ul> 
     </div> 
    </div> 
    </nav> 

     <div class="container"> 
    <table class="table table-striped"> 
    <thead> 
    <tr> 
     <th>Id</th> 
     <th>Time</th> 
     <th>U L1</th> 

     <th>Powerlvl adj max</th> 
     <th>VAR Q<small>abs</small></th> 
     <th>VAR Q<small>abs</small> lead or lag</th> 
       </tr> 
    </thead> 
    <tbody id="tbody"></tbody> 
    <tfoot> 
    <nav> 
     <ul class="pager"> 
      <li class="previous disabled"><a id="pvpg" href="#"><span aria-hidden="true">&larr;</span> Older</a> 
      </li> 
      <li class="next"><a id="nxtpg" href="#">Newer <span aria-hidden="true">&rarr;</span></a></li> 
     </ul> 
    </nav> 
    </tfoot> 
</table> 
</div> 
<script src="bower_components/jquery/dist/jquery.js"></script> 
    <script src="bower_components/bootstrap/dist/js/bootstrap.js"></script> 
<script> 
var index = 0; 
    var Name = getQueryParameters().name; 
    var pages = 50; 

    var num = getNumberMeasurements(inverterName); 
var nextpager = document.getElementById("nxtpg"); 
var previouspager = document.getElementById("pvpg"); 

    getMeasurements(inName, index, pages); 

nextpager.onclick = function() { 
    if (index >= num/pages) 
     return; 

    index++; 
    getMeasurements(Name, index, pages); 
}; 

previouspager.onclick = function() { 
    if (index == 0) 
     return; 

    index--; 
    getMeasurements(Name, index, pages); 
}; 

function handlePagerBtns() { 
    var calculated = 0; 
    if (num > 0){ 
     calculated = Math.ceil(num/pages); 
    } 

    if (index >= calculated) { 
     var li = nextpager.parentNode; 
     li.className = "next disabled"; 
    } 
    else { 
     var li = nextpager.parentNode; 
     li.className = "next"; 
    } 

    if (index == 0) { 
     var li = previouspager.parentNode; 
     li.className = "previous disabled" 
    } else { 
     var li = previouspager.parentNode; 
     li.className = "previous" 
    } 
} 

function getNumberMeasurements(name) { 
    var num = 1000; 
    return num; 
} 

function getMeasurements(name, skip, top) { 
    handlePagerBtns(); 

    var tbody = document.getElementById("tbody"); 
    tbody.innerHTML = ""; 

    $.get("http://laaablaaablaaablaaaab('" + name + "')/Measurement?$orderby=LogTime+desc&$skip=" + skip*top + "+&$top=" + top, {}) 
      .done(function (data) { 
       data.value.forEach(function (measurement) { 
        var trow = document.createElement("TR"); 

        for (var k in measurement) { 
         if (k == "_Name") 
          continue; 

         var tcell = document.createElement("TD"); 
         if (k == "Id" || k == "LogTime") { 
          tcell.innerHTML = measurement[k]; 
         } 
         else if (k == "ReactivePowerQabsIsLag" || k == "ReactivePowerCosPhiIsLag") { 
          tcell.innerHTML = measurement[k]; 
         } 
         else { 
          if (measurement[k] != null) 
           tcell.innerHTML = measurement[k].toFixed(2); 
         } 
         trow.appendChild(tcell); 
        } 

        tbody.appendChild(trow); 
       }); 
      }); 
} 

function getQueryParameters() { 
    var queryString = location.search.replace("?", ""); 
    var params = queryString.split("&"); 
    var queryParams = {}; 
    params.forEach(function (parm) { 
     var array = parm.split("="); 
     queryParams[array[0]] = array[1]; 
    }); 

    ` 
+0

Ссылка на страницу была бы полезной, в противном случае невозможно ответить. – Oleg

+0

http://tekdataacq.elektro.dtu.dk/smartpv/list.html?name=186902N502 – Kasper

ответ

0

Проблема в том, что таблица заселена javascript, но ваша функция не оценивает javascript, а просто втягивает HTML. Выполните http://phantomjs.org/ для общего решения, написанного на Javascript. Если решение построено с использованием интерфейса командной строки Phantom.js, вы можете ccess его из MATLAB через функцию system().

+0

Не могли бы вы предоставить дополнительную информацию? Как я уже говорил, я не знаком с java-скриптом :(. – Kasper

Смежные вопросы