المستوى المطلوب: مبتدئ. لو بتفتح موقع وتنقل أسعار المنتجات بإيدك كل يوم، المقال ده هيوفّرلك الساعة دي ويخلّي السكربت يعملها في ثواني. هتطلع منه بسكربت Python شغّال (أقل من 40 سطر) يسحب اسم وسعر كل منتج ويحفظهم في ملف products.csv تقدر تفتحه في Excel.
اعمل Web Scraper بـ Python يسحب أسعار المنتجات أوتوماتيك
المشكلة باختصار
أي صفحة منتجات على النت هي في الأصل ملف HTML: نص مليان وسوم زي <div> و<span>. عينك بتشوف جدول مرتب، لكن الكمبيوتر بيشوف فوضى وسوم. الـ Web Scraping هو إنك تكتب برنامج يقرأ الفوضى دي ويطلّع منها بيانات منظمة: اسم المنتج وسعره في صفوف. ده بيحل مشكلة حقيقية: متابعة الأسعار يدويًا بطيئة وبتغلط.
الفكرة بمثال بسيط قبل التعريف العلمي
تخيّل صاحبك قاعد قدامه جريدة فيها صفحة إعلانات مليانة منتجات وأسعار. انت طلبت منه يكتبلك في دفتر اسم كل منتج وسعره بس. هو بيعمل إيه؟ بيمشي بعينه سطر سطر، يلاقي اسم المنتج، يكتبه، يلاقي السعر جنبه، يكتبه، وينتقل للي بعده لحد ما يخلّص الصفحة.
السكربت بيعمل نفس الحركة بالظبط. الجريدة هي صفحة الـ HTML. وقلم صاحبك اللي بيعرف "ده اسم وده سعر" هو مكتبة بتفهم بنية الـ HTML. والدفتر هو ملف products.csv.
دلوقتي التعريف العلمي الدقيق: الـ HTML بيترتّب على شكل شجرة من العناصر المتداخلة (DOM tree). كل منتج بيبقى عنصر له اسم وسمات (attributes) وكلاس (class) بيميّزه. مكتبة زي Beautiful Soup بتحوّل النص ده لشجرة تقدر تتنقّل فيها، وتطلب منها مثلًا: "هاتلي كل عنصر كلاسه price". الكلام ده اسمه parsing، يعني تحويل نص خام لبنية ليها معنى.
الأدوات اللي هتستخدمها
هتحتاج أداتين بس:
- requests: بتجيب محتوى الصفحة (الـ HTML) من السيرفر. زي ما تكون فتحت الصفحة بس من غير متصفح.
- Beautiful Soup (bs4): بتفهم الـ HTML وتدوّر جواه على العناصر اللي عايزها.
التنصيب بأمر واحد:
pip install requests beautifulsoup4هنتدرّب على موقع books.toscrape.com، وهو موقع متعمّل مخصوص عشان الناس تتعلّم عليه الـ scraping بشكل قانوني وآمن. ده أحسن مكان تبدأ منه قبل ما تقرب من أي موقع حقيقي.
الخطوات: من صفر لملف CSV
- اجلب الصفحة بـ
requests.getوحط لها مهلة (timeout) عشان ميعلّقش برنامجك. - حوّل الـ HTML لشجرة بـ
BeautifulSoup. - اختار كل "كرت منتج" بالكلاس بتاعه، واسحب منه الاسم والسعر.
- كرّر على كل الصفحات، وحط تأخير بين الصفحة والتانية.
- اكتب النتيجة في ملف CSV.