تحليل واستخراج البيانات باستخدام TypeScript: لماذا هو أداتك الفائقة الجديدة
\n\nهل حلمت يومًا بجمع بيانات قيّمة من عشرات المواقع في دقائق بدلاً من أسابيع؟ أو أتمتة جمع المعلومات الروتيني لمشروعك التعليمي؟ إذا كان الأمر كذلك، فأنت في المكان الصحيح. اليوم سنتحدث عن كيف يمكن لـ تحليل البيانات باستخدام TypeScript أن يحولك إلى سيد حقيقي للبيانات.
\n\nيعتقد الكثيرون أن تحليل البيانات هو حكر على Python. نعم، Python هو ملك النماذج الأولية، ولكن عندما يصبح المشروع جادًا، يظهر TypeScript على المسرح. الكتابة الصارمة (Typing)، والتعامل المريح مع العمليات غير المتزامنة (Asynchronous)، والدعم الممتاز من بيئات التطوير المتكاملة (IDE) تجعل استخراج البيانات باستخدام TypeScript ليس فقط ممكنًا، بل ممتعًا للغاية. دعنا نفهم كيف يعمل ذلك.
\n\nلماذا TypeScript وليس Python فقط لتحليل البيانات؟
\n\nقبل الغوص في الكود، دعنا نعترف بصراحة: Python رائع للبدء السريع. لكن TypeScript لديه أوراق رابحة خاصة به:
\n\n- \n
- الكتابة الصارمة تنقذ من الأخطاء السخيفة. أنت تعرف بالضبط ما ترجعه الدالة — سلسلة نصية، مصفوفة، أو كائن. لا مفاجآت
undefinedفي وقت التشغيل. \n - العمليات غير المتزامنة جاهزة فورًا. تعمل
async/awaitفي TypeScript بشكل مثالي، وهذا أمر حاسم لتحليل البيانات حيث تحتاج إلى معالجة مئات الطلبات في وقت واحد. \n - النظام البيئي لـ Node.js. جميع المكتبات الأفضل لتحليل البيانات (Cheerio، Puppeteer، Playwright) لديها أنواع ممتازة لـ TypeScript. \n
- قابلية التوسع. من الأسهل صيانة كود TypeScript في المشاريع الكبيرة، خاصة إذا كنت تكتب محللًا لدورة كاملة أو منصة تعليمية. \n
إذا كنت مطورًا يريد كتابة كود نظيف وواضح وموثوق — فإن تحليل البيانات باستخدام TypeScript سيصبح أداتك المفضلة.
\n\nمكتبات التحليل: اختر سلاحك
\n\nفي عالم TypeScript، هناك ثلاثة أبطال رئيسيين. لكل منهم قوته الخارقة:
\n\n1. Cheerio — المدفعية الخفيفة
\nإذا كنت تحتاج فقط إلى تحليل HTML واستخراج البيانات دون تحميل المتصفح بالكامل — فإن Cheerio هو خيارك. يعمل مثل jQuery على الخادم، ولكن بدون عرض مرئي. مثالي للصفحات الثابتة.
\n\n2. Puppeteer — المدفعية الثقيلة
\nعندما يستخدم الموقع JavaScript لعرض المحتوى (React، Angular، Vue)، يكون Cheerio عاجزًا. هنا يأتي دور Puppeteer — فهو يدير متصفح Chrome حقيقي. يمكنك النقر، التمرير، وانتظار ظهور العناصر.
\n\n3. Playwright — الأداة الشاملة الحديثة
\nتطوير Puppeteer من Microsoft. يدعم Chrome، Firefox، Safari. أكثر استقرارًا وسرعة. إذا كنت تبدأ مشروعًا جديدًا — فكر في Playwright.
\n\nلدرسنا، سنستخدم Cheerio (للبساطة) وPuppeteer (للسيناريوهات المعقدة). هيا بنا!
\n\nالتطبيق العملي: كتابة أول محلل باستخدام TypeScript
\n\nلنتخيل أننا نريد جمع قائمة بجميع المقالات من مدونة (مثل pythonlib.ru). سننشئ أداة استخراج بسيطة ولكنها عملية.
\n\nالخطوة 1. تثبيت وإعداد المشروع
\nننشئ مجلدًا ونبدأ المشروع:
\n\nmkdir typescript-parser\ncd typescript-parser\nnpm init -y\nnpm install cheerio axios typescript @types/node --save-dev\nnpx tsc --init\n\nنقوم بإعداد tsconfig.json: نضبط "module": "commonjs" و "target": "ES2020".
الخطوة 2. كتابة كود المحلل
\nننشئ ملف parser.ts:
import axios from 'axios';\nimport * as cheerio from 'cheerio';\n\ninterface Article {\n title: string;\n link: string;\n date: string;\n}\n\nasync function parseArticles(url: string): Promise<Article[]> {\n try {\n const response = await axios.get(url);\n const html = response.data;\n const $ = cheerio.load(html);\n const articles: Article[] = [];\n\n // لنفترض أن المقالات موجودة في العنصر