очистка html для элемента td с использованием cheerio js и node js

#javascript #jquery #node.js #web-scraping #cheerio

#javascript #jquery #node.js #веб-очистка #cheerio

Вопрос:

У меня есть много html-файлов с приведенной ниже структурой. Мне нужно получить значения ‘GET’ и ‘http://localhost:5601/app/sense «снизу. но они не являются точными одинаковыми значениями во всех документах, будь то post, put или delete. но структура html такая же.

 <colgroup>
      <col class="col-lg-1">
      <col class="col-lg-7">
   </colgroup>
   <tbody>
      <tr>
         <td>
            <code>Method</code>
         </td>
         <td>GET</td>
      </tr>
      <tr>
         <td>
            <code>URL Path amp;amp; Params</code>
         </td>
         <td>http://localhost:5601/app/sense</td>
      </tr>
   </tbody>
</table>
  

Есть предложения о том, как это сделать с помощью cheerio? Я пытаюсь проанализировать таблицу HTML в поисках значений метода и URL в элементе td, но мне не повезло.

 glob(__dirname   "/../docs/*/*/*/*/*/*.html", function (er, files) {
    for (var i = 0; i < files.length; i  ) {

        fs.readFile(files[i], (err, data) => {
            if (err) throw err;
            $ = cheerio.load(data);
            $('tr').each(function () {
                console.log($('td').val());
            });
        });

    }
});
  

Ответ №1:

Вы должны настроить таргетинг на каждый TD и получить текст, он не имеет значения

 glob(__dirname   "/../docs/*/*/*/*/*/*.html", function (er, files) {
    for (var i = 0; i < files.length; i  ) {

        fs.readFile(files[i], (err, data) => {
            if (err) throw err;
            var $ = cheerio.load(data);

            var method = $('tr').eq(0).find('td').eq(1).text();
            var url    = $('tr').eq(1).find('td').eq(1).text();

        });

    }
});
  

Ответ №2:

Используйте .eq и .найдите методы для поиска ваших значений https://cheerio.js.org /

 glob(__dirname   "/../docs/*/*/*/*/*/*.html", function (er, files) {
   for (var i = 0; i < files.length; i  ) {

        fs.readFile(files[i], (err, data) => {
          if (err) throw err;
          $ = cheerio.load(data);
          console.log($('tr').eq(0).find('td').eq(1).text());
          console.log($('tr').eq(1).find('td').eq(1).text());
       });
   }
});