اسکریپت برای استخراج داده‌های جدول HTML به اکسل (.xls، .csv) با استفاده از جاوا اسکریپت


در دنیای امروز، داده‌ها نقش بسیار حیاتی در تصمیم‌گیری‌های کسب‌وکار، تحلیل‌های علمی، و مدیریت اطلاعات دارند. یکی از چالش‌های رایج، استخراج داده‌ها از صفحات وب و تبدیل آن‌ها به قالب‌های قابل استفاده در نرم‌افزارهای مختلف است، به‌خصوص زمانی که داده‌ها در قالب جدول‌های HTML قرار دارند. در این مقاله، قصد دارم به طور کامل و جامع درباره نحوه نوشتن اسکریپتی صحبت کنم که بتواند داده‌های موجود در جدول‌های HTML را به فرمت‌های اکسل (.xls) و فایل‌های متنی CSV تبدیل کند، و این کار را با استفاده از زبان برنامه‌نویسی محبوب جاوااسکریپت انجام دهد.
در ابتدا، باید بدانیم که چرا چنین اسکریپتی نیاز است و چه کاربردهایی دارد. در بسیاری از وب‌سایت‌ها، داده‌ها در قالب جدول‌های HTML نمایش داده می‌شوند. اگر کاربر بخواهد این داده‌ها را برای تحلیل‌های بیشتر، گزارش‌گیری یا وارد کردن به نرم‌افزارهای تحلیل داده مانند اکسل یا گوگل‌اسپلد، استخراج کند، باید این داده‌ها را به فرمت‌های مناسب تبدیل کند. به‌علاوه، این کار باید به صورت خودکار و بدون نیاز به دانلود دستی و کپی پیست انجام شود؛ یعنی، یک اسکریپت باید بتواند به صورت مستقیم این کار را انجام دهد.
در این راستا، جاوااسکریپت، به علت قابلیت اجرا در مرورگرهای وب، و همچنین توانایی دسترسی به ساختار DOM صفحه، بهترین گزینه برای نوشتن چنین اسکریپتی است. در ادامه، ابتدا مروری کلی بر روش‌های استخراج داده از جدول‌های HTML داریم، سپس نحوه تبدیل آن‌ها به فرمت‌های اکسل و CSV را شرح می‌دهیم، و در نهایت، یک نمونه کد کامل و عملی ارائه می‌دهیم که به شما کمک می‌کند این فرآیند را در پروژه‌های خود پیاده‌سازی کنید.
استخراج داده‌های جدول HTML با جاوااسکریپت
برای شروع، باید بدانیم که چگونه داده‌های داخل جدول HTML را توسط جاوااسکریپت جمع‌آوری کنیم. معمولا، جدول‌های HTML با تگ‌های `<table>`, `<tr>`, `<td>` و `<th>` ساخته می‌شوند. برای استخراج داده‌ها، ابتدا باید عنصر `<table>` موردنظر را پیدا کنیم، سپس به هر ردیف `<tr>` دسترسی پیدا کنیم، و در نهایت، در هر ردیف، به سلول‌های `<td>` یا `<th>` مراجعه کنیم.
یک روش معمول برای این کار، استفاده از `document.querySelector` یا `getElementById` است. فرض کنید، جدول شما یک شناسه دارد، مثلا `id="data-table"`، بنابراین می‌توانید به صورت زیر عمل کنید:
javascript  

const table = document.getElementById('data-table');

const rows = table.querySelectorAll('tr');


سپس، باید در حلقه‌ای، هر ردیف را مرور کنیم و داده‌های هر سلول را جمع‌آوری کنیم. برای مثال:
javascript  

const data = [];

rows.forEach(row => {

const cells = row.querySelectorAll('th, td');

const rowData = [];

cells.forEach(cell => {

rowData.push(cell.innerText.trim());

});

data.push(rowData);

});


در این حالت، `data`، یک آرایه دو بعدی است که هر عنصر آن، یک ردیف از داده‌های جدول را در بر دارد.
تبدیل داده‌ها به فرمت CSV
پس از جمع‌آوری داده‌ها، مرحله بعد، تبدیل آن‌ها به فرمت CSV است. CSV یا "Comma-Separated Values" قالبی بسیار ساده است که هر سطر، با خط جدید جدا شده، و هر ستون با کاما از هم جدا می‌شود. تبدیل آرایه دو بعدی به CSV بسیار ساده است:
javascript  

function arrayToCSV(data) {

return data.map(row => row.join(',')).join('\n');

}


در اینجا، هر ردیف، با کاما جدا می‌شود و سپس، تمامی ردیف‌ها با خط جدید جدا می‌شوند. نتیجه، یک رشته متنی است که می‌تواند در فایل CSV ذخیره یا دانلود شود.
تبدیل داده‌ها به فرمت XLS (Excel)
د... ← ادامه مطلب در magicfile.ir