Chrome 在浏览器控制台中使用javascript将从HTML提取的表格格式化为CSV格式时出错

42fyovps  于 2023-03-05  发布在  Go
关注(0)|答案(1)|浏览(168)

我正在尝试从this网站上的HTML格式中提取表格(从下拉框中选择任意一项),我已经成功地编写了一个javascript控制台代码,它在提取表格方面做得很好。但是,我似乎无法使它看起来像一个. csv格式的文件,每行之间都有空格。现在它是一个很长的单行,而不是看起来像从网站上的表。因此,我想寻求帮助,使该HTML表是在任何csv阅读软件的确切形式导出。
下面是我在Chrome控制台中编写的代码:

var x = document.querySelectorAll("div.container table tbody")
var y = x[0].querySelectorAll("tr")
var myarray = []
for (var i = 0; i < y.length; i++) {
  var nametext = y[i].textContent;
  var z = y[i].querySelectorAll("td")

  for (var j = 0; j < z.length; j++) {
    var columns = z[j].textContent
    myarray.push([columns]);
  };
};

function make_code() {
  var code = '<p></p>';
  for (var k = 0; k < myarray.length; k++) {
    code += myarray[k][0] + ";"
  };
  var w = window.open("");
  w.document.write(code);
}

make_code()
ds97pgxw

ds97pgxw1#

下面是一个更简洁的版本,它也处理了标题和引号
如果需要最后一个单元格中的链接,则需要td.querySelector("a").href
https://jsfiddle.net/mplungjan/jrvms0of/

const ths = document.querySelectorAll("div.container table thead tr th");
const trs = document.querySelectorAll("div.container table tbody tr");
const csv = [[...ths].map(th => `"${th.textContent.trim()}"`).join(";")];
trs.forEach(tr => csv.push([...tr.querySelectorAll("td")].map(td => `"${td.textContent.trim().replace(/"/g,"&quot;")}"`).join(";")))
console.log(csv.join("\n"));
<div class="container" id="divTabel">
  <h2>Ocolul Silvic Aiud - lista partizilor </h2>
  <h4>Proprietatea publica a UAT</h4><br>

  <table width="100%" border="0" align="center" cellspacing="2" cellpadding="0" class="table table-hover table-responsive table-condensed">
    <thead>
      <tr>
        <th>#</th>
        <th>Numar SUMAL</th>
        <th style="text-align:right">Volum<br> - mc -</th>

        <th style="text-align:center">Coord.geografice<br>punct parchet</th>
        <th style="text-align:center">Coord.geografice<br>punct<br>platforma primara</th>
        <th style="text-align:center">Necesita <br>drept<br>servitute</th>
        <th style="text-align:center">Descarcare <br>documente PDF</th>
      </tr>
    </thead>

    <tbody>
      <tr>
        <td>1</td>
        <td>1642560<br>Pe picior</td>
        <td style="text-align:right">348</td>
        <td style="text-align:center">Lat.: 46.448164<br>Long.: 23.237122</td>
        <td style="text-align:center">Lat.: 46.443154<br>Long.: 23.702623</td>
        <td style="text-align:center">Nu</td>
        <td style="text-align:center"><a href="http://licitatii.rosilva.ro/documente/FABAIU/apv_1642560_2020_20210303111611.pdf" target="_blank">APV</a><br><a href="http://licitatii.rosilva.ro/documente/FABAIU/schita_1642560_2020_20210303111636.pdf" target="_blank">Schita parchet</a></td>
      </tr>
      <tr>
        <td>2</td>
        <td>1641884<br>Pe picior</td>
        <td style="text-align:right">73</td>
        <td style="text-align:center">Lat.: 46.427348<br>Long.: 23.687611</td>
        <td style="text-align:center">Lat.: 46.422911<br>Long.: 23.688399</td>
        <td style="text-align:center">Nu</td>
        <td style="text-align:center"><a href="http://licitatii.rosilva.ro/documente/FABAIU/apv_1641884_2020_20210303111905.pdf" target="_blank">APV</a><br><a href="http://licitatii.rosilva.ro/documente/FABAIU/schita_1641884_2020_20200903115015.pdf" target="_blank">Schita parchet</a></td>
      </tr>
      <tr>
        <td>3</td>
        <td>2100146601750<br>Pe picior</td>
        <td style="text-align:right">34</td>
        <td style="text-align:center">Lat.: 46.305584<br>Long.: 23.758672</td>
        <td style="text-align:center">Lat.: 46.305572<br>Long.: 23.758560</td>
        <td style="text-align:center">Nu</td>
        <td style="text-align:center"><a href="http://licitatii.rosilva.ro/documente/FABAIU/apv_2100146601750_2021_20210929171151.pdf" target="_blank">APV</a><br><a href="http://licitatii.rosilva.ro/documente/FABAIU/schita_2100146601750_2021_20210929171206.pdf" target="_blank">Schita parchet</a></td>
      </tr>
    </tbody>
    <tfoot> </tfoot>
  </table>
</div>

相关问题