├── .gitignore ├── README.md ├── Format.xlsx ├── output.xlsx ├── result.xlsx ├── result-3.xlsx ├── Web-Scraping.rar ├── result - 1.xlsx ├── package.json ├── test.js └── Scraping.js /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | "# web-scrap-export-excel" 2 | -------------------------------------------------------------------------------- /Format.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dragonwarrior9873/web-scrap-export-excel/HEAD/Format.xlsx -------------------------------------------------------------------------------- /output.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dragonwarrior9873/web-scrap-export-excel/HEAD/output.xlsx -------------------------------------------------------------------------------- /result.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dragonwarrior9873/web-scrap-export-excel/HEAD/result.xlsx -------------------------------------------------------------------------------- /result-3.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dragonwarrior9873/web-scrap-export-excel/HEAD/result-3.xlsx -------------------------------------------------------------------------------- /Web-Scraping.rar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dragonwarrior9873/web-scrap-export-excel/HEAD/Web-Scraping.rar -------------------------------------------------------------------------------- /result - 1.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dragonwarrior9873/web-scrap-export-excel/HEAD/result - 1.xlsx -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "module", 3 | "dependencies": { 4 | "axios": "^1.6.8", 5 | "exceljs": "^4.4.0", 6 | "tqdm": "^2.0.3", 7 | "xlsx": "^0.18.5" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /test.js: -------------------------------------------------------------------------------- 1 | import XLSX from 'xlsx'; 2 | console.log(new Date(1712673665110)); 3 | const date = new Date(1712673665110); 4 | const hours = date.getHours().toString().padStart(2, '0'); 5 | const minutes = date.getMinutes().toString().padStart(2, '0'); 6 | const seconds = date.getSeconds().toString().padStart(2, '0'); 7 | const day = date.getDate().toString().padStart(2, '0'); 8 | const month = (date.getMonth() + 1).toString().padStart(2, '0'); 9 | const year = date.getFullYear(); 10 | 11 | const formattedDate = `${hours}:${minutes}:${seconds} ${day}/${month}/${year}`; 12 | console.log(formattedDate); 13 | 14 | const workbook = XLSX.readFile("result-3.xlsx"); 15 | const workbookout = XLSX.utils.book_new(); 16 | const workbookSheet = workbook.SheetNames; 17 | let workbookResponse = {}; 18 | for( let i = 0 ; i < 1; i++ ){ 19 | workbookResponse = XLSX.utils.sheet_to_json(workbook.Sheets[workbookSheet[i]]); 20 | workbookResponse.sort((a, b) => b.Marfa_total - a.Marfa_total); 21 | let workSheet = XLSX.utils.json_to_sheet(workbookResponse); 22 | XLSX.utils.book_append_sheet(workbookout, workSheet, workbookSheet[i]); 23 | } 24 | console.log(workbookResponse); 25 | XLSX.writeFile(workbookout, "output.xlsx") -------------------------------------------------------------------------------- /Scraping.js: -------------------------------------------------------------------------------- 1 | import axios from 'axios'; 2 | import Excel from 'exceljs'; 3 | import path from 'path'; 4 | import XLSX from 'xlsx'; 5 | import tqdm from 'tqdm'; 6 | 7 | const workbook = new Excel.Workbook(); 8 | const exportPath = path.resolve('result.xlsx'); 9 | let startDate = new Date('2024-03-11'); 10 | let endDate = new Date('2024-04-12'); 11 | let currentDate = new Date(startDate.getTime()); 12 | let worksheet = []; 13 | let month_iterator = 0; 14 | while (currentDate <= endDate) { 15 | const dateString = currentDate.toISOString().slice(0, 10); 16 | worksheet[month_iterator] = workbook.addWorksheet(dateString); 17 | worksheet[month_iterator].columns = [ 18 | { key: 'codAviz', header: 'CodAviz' }, 19 | { key: 'emitent_denumire', header: 'Emitent_denumire' }, 20 | { key: 'emitent_cui', header: 'Emitent_cui' }, 21 | { key: 'provenienta', header: 'Provenienta' }, 22 | { key: 'marfa_grupeSpecii', header: 'Marfa_grupeSpecii' }, 23 | { key: 'marfa_specii', header: 'Marfa_specii' }, 24 | { key: 'marfa_sortimente', header: 'Marfa_sortimente' }, 25 | { key: 'marfa_total', header: 'Marfa_total' }, 26 | { key: 'nrIdentificare', header: 'NrIdentificare' }, 27 | { key: 'transportator_denumire', header: 'Transportator_denumire' }, 28 | { key: 'transportator_cui', header: 'Transportator_cui' }, 29 | { key: 'valabilitate_emitere', header: 'Valabilitate_emitere' }, 30 | { key: 'valabilitate_finalizare', header: 'Valabilitate_finalizare' }, 31 | { key: 'volum_volumSpecie', header: 'Volum_volumSpecie' }, 32 | ]; 33 | month_iterator++; 34 | currentDate.setDate(currentDate.getDate() + 1); 35 | } 36 | 37 | const response = await axios.get('https://inspectorulpadurii.ro/api/aviz/locations'); 38 | console.log(response.data.codAviz.length); 39 | for (let i = 0; i < response.data.codAviz.length; i++) { 40 | console.log(`Iterate ${i}th element.`); 41 | let temp = response.data.codAviz[i]; 42 | if (temp.slice(0, 2).toLowerCase() === "dc") { 43 | try { 44 | let content = await axios.get(`https://inspectorulpadurii.ro/api/aviz/${temp}`); 45 | let data = content.data; 46 | let inserted = { 47 | 'codAviz': data.codAviz, 48 | 'emitent_denumire': data.emitent.denumire, 49 | 'emitent_cui': data.emitent.cui, 50 | 'provenienta': data.provenienta, 51 | 'marfa_grupeSpecii': data.marfa.grupeSpecii, 52 | 'marfa_specii': data.marfa.specii, 53 | 'marfa_sortimente': data.marfa.sortimente, 54 | 'marfa_total': data.marfa.total, 55 | 'nrIdentificare': data.nrIdentificare, 56 | 'transportator_denumire': data.transportator.denumire, 57 | 'transportator_cui': data.transportator.cui, 58 | 'valabilitate_emitere': formateDate(data.valabilitate.emitere), 59 | 'valabilitate_finalizare': formateDate(data.valabilitate.finalizare), 60 | 'volum_volumSpecie': data.volum.volumSpecie, 61 | }; 62 | const dateObj = new Date(data.valabilitate.emitere).toISOString().slice(0, 10); 63 | month_iterator = 0; 64 | currentDate = new Date(startDate.getTime()); 65 | while (currentDate <= endDate) { 66 | const dateString = currentDate.toISOString().slice(0, 10); 67 | if (dateString == dateObj) { 68 | console.log(`Inserted to the Excel ${i}th row.`); 69 | console.log(`Inserted Row has ${dateString} date`); 70 | worksheet[month_iterator].addRow(inserted); 71 | await workbook.xlsx.writeFile(exportPath); 72 | } 73 | currentDate.setDate(currentDate.getDate() + 1); 74 | month_iterator++; 75 | } 76 | } 77 | catch (err) { 78 | console.error(err); 79 | } 80 | } 81 | } 82 | convertTableSorted(); 83 | 84 | 85 | function convertTableSorted() { 86 | try { 87 | const workbookResult = XLSX.readFile("result.xlsx"); 88 | const workbookout = XLSX.utils.book_new(); 89 | const workbookSheet = workbookResult.SheetNames; 90 | 91 | for( let i = 0 ; i < workbookSheet.length; i++ ){ 92 | let workbookResponse = {}; 93 | workbookResponse = XLSX.utils.sheet_to_json(workbookResult.Sheets[workbookSheet[i]]); 94 | workbookResponse.sort((a, b) => b.Marfa_total - a.Marfa_total); 95 | let workSheet = XLSX.utils.json_to_sheet(workbookResponse); 96 | XLSX.utils.book_append_sheet(workbookout, workSheet, workbookSheet[i]); 97 | } 98 | 99 | XLSX.writeFile(workbookout, "output.xlsx") 100 | } 101 | catch (err) { 102 | console.error("No result.xlsx"); 103 | } 104 | } 105 | 106 | function formateDate(date) { 107 | date = new Date(date); 108 | const hours = date.getHours().toString().padStart(2, '0'); 109 | const minutes = date.getMinutes().toString().padStart(2, '0'); 110 | const seconds = date.getSeconds().toString().padStart(2, '0'); 111 | const day = date.getDate().toString().padStart(2, '0'); 112 | const month = (date.getMonth() + 1).toString().padStart(2, '0'); 113 | const year = date.getFullYear(); 114 | const formattedDate = `${hours}:${minutes}:${seconds} ${day}/${month}/${year}`; 115 | return formattedDate; 116 | } --------------------------------------------------------------------------------