🎬 مقدمة كورس Web Scraping and Automation
هل فكرت يومًا كيف تقوم بعض المواقع بجمع ملايين البيانات خلال لحظات؟ أو كيف يمكن لتطبيق بسيط أن يجلب أسعار المنتجات من 5 مواقع مختلفة خلال ثوانٍ؟
في هذا الكورس الخفيف الظريف والمفيد جدًا، سنأخذك في رحلة ممتعة من الصفر حتى بناء أدوات قوية لجمع البيانات، التفاعل مع المواقع، واستخدام APIs لبناء مشاريع مفيدة في حياتك العملية والبرمجية.
ستتعلم:
كيف تفهم المواقع من الداخل.
كيف تستخرج أي بيانات تريدها.
كيف تتجاوز العقبات الأمنية.
وكيف تبني أدوات تشبه أدوات الذكاء الاصطناعي المنتشرة اليوم.
الكورس عملي، مبني على مشاريع، وسهل لأي مبتدئ حتى لو لم يكن لديه خبرة سابقة في البرمجة.
🧠 بايثون فقط، وأفكار ستفتح لك مجالات كبيرة في العمل الحر أو تطوير أدواتك الخاصة.
جهّز حاسوبك، افتح المتصفح، واستعد لدخول عالم لم تره من قبل!
:)
هل فكرت يومًا كيف تقوم بعض المواقع بجمع ملايين البيانات خلال لحظات؟ أو كيف يمكن لتطبيق بسيط أن يجلب أسعار المنتجات من 5 مواقع مختلفة خلال ثوانٍ؟
في هذا الكورس الخفيف الظريف والمفيد جدًا، سنأخذك في رحلة ممتعة من الصفر حتى بناء أدوات قوية لجمع البيانات، التفاعل مع المواقع، واستخدام APIs لبناء مشاريع مفيدة في حياتك العملية والبرمجية.
ستتعلم:
كيف تفهم المواقع من الداخل.
كيف تستخرج أي بيانات تريدها.
كيف تتجاوز العقبات الأمنية.
وكيف تبني أدوات تشبه أدوات الذكاء الاصطناعي المنتشرة اليوم.
الكورس عملي، مبني على مشاريع، وسهل لأي مبتدئ حتى لو لم يكن لديه خبرة سابقة في البرمجة.
🧠 بايثون فقط، وأفكار ستفتح لك مجالات كبيرة في العمل الحر أو تطوير أدواتك الخاصة.
جهّز حاسوبك، افتح المتصفح، واستعد لدخول عالم لم تره من قبل!
:)
👍5❤3
## 🧠 المحاضرة الأولى: فهم بنية الويب وتعامل الآلات معها
### 🎯 أهداف المحاضرة:
* فهم كيف تعمل المواقع من الداخل.
* التمييز بين HTML، CSS، وJavaScript.
* فهم ما هي البيانات القابلة للاستخلاص.
* نظرة على الأدوات التي تساعدنا في تحليل المواقع.
* تجهيز بيئة العمل للبدء بـ Web Scraping وAutomation.
---
## 🖼️ صورة توضيحية
"كيف يرى الإنسان الموقع، وكيف تراه الآلة":

---
### 🎯 أهداف المحاضرة:
* فهم كيف تعمل المواقع من الداخل.
* التمييز بين HTML، CSS، وJavaScript.
* فهم ما هي البيانات القابلة للاستخلاص.
* نظرة على الأدوات التي تساعدنا في تحليل المواقع.
* تجهيز بيئة العمل للبدء بـ Web Scraping وAutomation.
---
## 🖼️ صورة توضيحية
"كيف يرى الإنسان الموقع، وكيف تراه الآلة":

---
## 🧩 1. ما هو Web Scraping؟
> Web Scraping هو عملية استخراج البيانات من المواقع بطريقة منظمة.
مثال: استخراج عناوين مقالات من موقع إخباري، أو أسعار منتجات من متجر إلكتروني.
---
## 🌐 2. ما هي مكونات صفحة الويب؟
كل موقع يتكون غالبًا من 3 أجزاء أساسية:
| المكون | الوصف | المثال |
| ---------- | ------------ | -------------------------------- |
| HTML | هيكل المحتوى |
| CSS | تنسيق الشكل | اللون، الخط، الترتيب |
| JavaScript | وظائف وتفاعل | إظهار عناصر، ملء بيانات تلقائيًا |
---
## 🛠️ 3. كيف تفهم الآلة صفحة HTML؟
> عندما نزور صفحة ويب، المتصفح يعرض لنا الشكل النهائي. لكن عند البرمجة، نحصل فقط على الكود الخام (HTML).
### مثال على كود HTML لمنتج:
### عند استخدام Web Scraping نبحث عن:
* العناصر
* الفئات
---
## 🔍 4. أدوات لفهم هيكل المواقع
### 📌 أفضل الطرق:
1. Inspect Element في المتصفح (كليك يمين > فحص)
2. أدوات المطور (Developer Tools) في Chrome أو Firefox
3. أداة Select في BeautifulSoup وSelenium لاحقًا في الكورس
---
## 💻 5. تثبيت الأدوات المطلوبة (بيئة العمل)
قبل أن نبدأ في الأكواد، نحتاج لتجهيز الآتي:
### ✅ Python (يفضل 3.10 أو أحدث)
[تحميل من الموقع الرسمي](https://www.python.org/downloads/)
### ✅ مكتبات Python:
| مكتبة | الاستخدام |
| ---------------- | -------------------------------------------- |
|
|
|
|
---
## 🔒 6. الفرق بين المواقع "الساهلة" و"المعقدة"
| نوع الموقع | الوصف | طريقة التعامل |
| --------------- | -------------------------------- | ------------------------------- |
| HTML ثابت | يظهر مباشرة عند الفتح | استخدم requests + BeautifulSoup |
| محتوى JS | لا يظهر إلا بعد تشغيل JavaScript | استخدم Selenium أو Puppeteer |
| محمي بطرق أمنية | مثل Cloudflare أو CAPTCHA | تقنيات متقدمة لاحقًا بالكورس |
---
## 💬 تمرين المحاضرة:
افتح الموقع التالي:
[https://quotes.toscrape.com/](https://quotes.toscrape.com/)
ثم:
* افتح Inspect.
* حاول معرفة الكود الذي يحتوي على اقتباس.
* انسخ Tag + class الخاص به.
---
## 🧭 ماذا سنتعلم لاحقًا؟
في المحاضرات التالية:
* كيفية جلب الصفحة بالكامل بالكود.
* كيف تحلل الصفحة وتستخرج البيانات.
* كيف تتعامل مع الصفحات المحمية.
* كيف تنشئ أدوات أو تطبيقات تجمع البيانات تلقائيًا.
---
## ✅ المهام المنزلية (تحفيزية):
1. جرب فتح 3 مواقع مختلفة واستخدم Inspect لمعرفة أماكن البيانات.
2. جهز Python وبيئة العمل المذكورة.
3. اقرأ عن HTML Tags الأساسية مثل:
---
:)
> Web Scraping هو عملية استخراج البيانات من المواقع بطريقة منظمة.
مثال: استخراج عناوين مقالات من موقع إخباري، أو أسعار منتجات من متجر إلكتروني.
---
## 🌐 2. ما هي مكونات صفحة الويب؟
كل موقع يتكون غالبًا من 3 أجزاء أساسية:
| المكون | الوصف | المثال |
| ---------- | ------------ | -------------------------------- |
| HTML | هيكل المحتوى |
<h1>عنوان</h1> || CSS | تنسيق الشكل | اللون، الخط، الترتيب |
| JavaScript | وظائف وتفاعل | إظهار عناصر، ملء بيانات تلقائيًا |
---
## 🛠️ 3. كيف تفهم الآلة صفحة HTML؟
> عندما نزور صفحة ويب، المتصفح يعرض لنا الشكل النهائي. لكن عند البرمجة، نحصل فقط على الكود الخام (HTML).
### مثال على كود HTML لمنتج:
<div class="product">
<h2 class="title">هاتف سامسونج A54</h2>
<span class="price">5999 EGP</span>
</div>
### عند استخدام Web Scraping نبحث عن:
* العناصر
<div>, <h2>, <span>…* الفئات
class="product"…---
## 🔍 4. أدوات لفهم هيكل المواقع
### 📌 أفضل الطرق:
1. Inspect Element في المتصفح (كليك يمين > فحص)
2. أدوات المطور (Developer Tools) في Chrome أو Firefox
3. أداة Select في BeautifulSoup وSelenium لاحقًا في الكورس
---
## 💻 5. تثبيت الأدوات المطلوبة (بيئة العمل)
قبل أن نبدأ في الأكواد، نحتاج لتجهيز الآتي:
### ✅ Python (يفضل 3.10 أو أحدث)
[تحميل من الموقع الرسمي](https://www.python.org/downloads/)
### ✅ مكتبات Python:
pip install requests beautifulsoup4 lxml selenium
| مكتبة | الاستخدام |
| ---------------- | -------------------------------------------- |
|
requests | لجلب الصفحات ||
beautifulsoup4 | لتحليل صفحات HTML ||
lxml | لتحسين سرعة التحليل ||
selenium | للتفاعل مع المواقع التي تعتمد على JavaScript |---
## 🔒 6. الفرق بين المواقع "الساهلة" و"المعقدة"
| نوع الموقع | الوصف | طريقة التعامل |
| --------------- | -------------------------------- | ------------------------------- |
| HTML ثابت | يظهر مباشرة عند الفتح | استخدم requests + BeautifulSoup |
| محتوى JS | لا يظهر إلا بعد تشغيل JavaScript | استخدم Selenium أو Puppeteer |
| محمي بطرق أمنية | مثل Cloudflare أو CAPTCHA | تقنيات متقدمة لاحقًا بالكورس |
---
## 💬 تمرين المحاضرة:
افتح الموقع التالي:
[https://quotes.toscrape.com/](https://quotes.toscrape.com/)
ثم:
* افتح Inspect.
* حاول معرفة الكود الذي يحتوي على اقتباس.
* انسخ Tag + class الخاص به.
---
## 🧭 ماذا سنتعلم لاحقًا؟
في المحاضرات التالية:
* كيفية جلب الصفحة بالكامل بالكود.
* كيف تحلل الصفحة وتستخرج البيانات.
* كيف تتعامل مع الصفحات المحمية.
* كيف تنشئ أدوات أو تطبيقات تجمع البيانات تلقائيًا.
---
## ✅ المهام المنزلية (تحفيزية):
1. جرب فتح 3 مواقع مختلفة واستخدم Inspect لمعرفة أماكن البيانات.
2. جهز Python وبيئة العمل المذكورة.
3. اقرأ عن HTML Tags الأساسية مثل:
div, span, ul, li, a, img.---
:)
Python.org
Download Python
The official home of the Python Programming Language
❤3🔥2
Web scraping & Automation<--> Ai Engineering pinned «مرحب بيكم في قناتنا التعليمية ⚡️🔥 سنقوم بالنشر والكورسات ان شاءالله ⚡️🔥 بعد دخول كل الاعضاء ستكون المحاضرات عبارة عن نصوص وصور وفيديوهات قصيرة يرجى التفاعل والاسئلة في التعليقات لتعم الفائدة»
🧩 محتوى المحاضرة:
1. ما هي صفحة الويب فعلًا؟
هيكل صفحة الويب مبني باستخدام:
HTML (HyperText Markup Language): يحدد المحتوى (نصوص، صور، أزرار...).
CSS: يحدد الشكل والتصميم.
JavaScript: يضيف تفاعلية ديناميكية.
في Web Scraping، نحن نهتم بـ HTML لأن البيانات التي نريد جمعها تكون موجودة فيه.
2. عناصر HTML الأساسية التي نحتاج لفهمها:
العنصر الوظيفة مثال
<div> حاوية عامة للعناصر <div class="product"> ... </div>
<a> رابط <a href="...">اسم المنتج</a>
<span> عنصر نصي صغير <span class="price">25$</span>
<img> صورة <img src="image.jpg">
رائع! إليك الآن شرحًا أعمق ومبسّطًا مع صورة توضيحية لواحدة من أكثر المفاهيم تعقيدًا للمبتدئين في هذه المرحلة، وهي:
🧠 ما هو DOM؟ وكيف نفهمه خطوة بخطوة؟
🎯 أولاً: ما المقصود بـ DOM؟
DOM = Document Object Model
هو الطريقة التي يتم بها تمثيل الصفحة داخليًا في المتصفح، وهو مثل شجرة عائلة، تحتوي على عناصر داخل عناصر.
مثال واقعي:
إذا كنت ترى صفحة تحتوي على قائمة منتجات، فإن كل منتج يعتبر "فرع" في الشجرة، وهذا الفرع يحتوي على أوراق مثل (اسم المنتج، سعره، صورته).
📦 مثال على بنية HTML:
لو نظرنا لهذا الكود كبنية DOM:
<html> هو الجذر.
تحته <body>
داخل <body> يوجد <div> يمثل منتج.
داخل <div> توجد العقد (Nodes) التالية:
<h2> للعنوان
<span> للسعر
<img> للصورة
🔍 كيف أستخدم أدوات المطور (DevTools) لفحص هذه العناصر؟
افتح أي موقع واضغط F12.
اختر أداة التحديد (رمز السهم أو العدسة 🔍).
اضغط على اسم منتج، وسيظهر لك الكود الخاص به مثل:
هذا يخبرك أن عنوان المنتج داخل عنصر h2 وله class="title".
هذه البيانات هي ما سنستهدفه في Python عند استخدام مكتبة BeautifulSoup.
🧪 تجربة عملية:
ادخل إلى الموقع التالي:
👉 https://books.toscrape.com
افتح أدوات المطور.
اضغط على اسم كتاب.
راقب الكود. هل الاسم داخل <h3> أو <a> أو <div>؟
جرب تتبع السعر أيضًا بنفس الطريقة.
🧠 تلميح للمحاضرة القادمة:
الآن بعد ما عرفنا كيف نفهم البيانات داخل صفحات الويب، سنتعلم كيف نكتب كود Python يستخدم requests و BeautifulSoup لاستخلاص هذه البيانات برمجيًا.
1. ما هي صفحة الويب فعلًا؟
هيكل صفحة الويب مبني باستخدام:
HTML (HyperText Markup Language): يحدد المحتوى (نصوص، صور، أزرار...).
CSS: يحدد الشكل والتصميم.
JavaScript: يضيف تفاعلية ديناميكية.
في Web Scraping، نحن نهتم بـ HTML لأن البيانات التي نريد جمعها تكون موجودة فيه.
2. عناصر HTML الأساسية التي نحتاج لفهمها:
العنصر الوظيفة مثال
<div> حاوية عامة للعناصر <div class="product"> ... </div>
<a> رابط <a href="...">اسم المنتج</a>
<span> عنصر نصي صغير <span class="price">25$</span>
<img> صورة <img src="image.jpg">
رائع! إليك الآن شرحًا أعمق ومبسّطًا مع صورة توضيحية لواحدة من أكثر المفاهيم تعقيدًا للمبتدئين في هذه المرحلة، وهي:
🧠 ما هو DOM؟ وكيف نفهمه خطوة بخطوة؟
🎯 أولاً: ما المقصود بـ DOM؟
DOM = Document Object Model
هو الطريقة التي يتم بها تمثيل الصفحة داخليًا في المتصفح، وهو مثل شجرة عائلة، تحتوي على عناصر داخل عناصر.
مثال واقعي:
إذا كنت ترى صفحة تحتوي على قائمة منتجات، فإن كل منتج يعتبر "فرع" في الشجرة، وهذا الفرع يحتوي على أوراق مثل (اسم المنتج، سعره، صورته).
📦 مثال على بنية HTML:
<html> <body> <div class="product"> <h2 class="title">اسم المنتج</h2> <span class="price">$29.99</span> <img src="image.jpg"> </div> </body> </html> لو نظرنا لهذا الكود كبنية DOM:
<html> هو الجذر.
تحته <body>
داخل <body> يوجد <div> يمثل منتج.
داخل <div> توجد العقد (Nodes) التالية:
<h2> للعنوان
<span> للسعر
<img> للصورة
🔍 كيف أستخدم أدوات المطور (DevTools) لفحص هذه العناصر؟
افتح أي موقع واضغط F12.
اختر أداة التحديد (رمز السهم أو العدسة 🔍).
اضغط على اسم منتج، وسيظهر لك الكود الخاص به مثل:
<h2 class="title">اسم المنتج</h2> هذا يخبرك أن عنوان المنتج داخل عنصر h2 وله class="title".
هذه البيانات هي ما سنستهدفه في Python عند استخدام مكتبة BeautifulSoup.
🧪 تجربة عملية:
ادخل إلى الموقع التالي:
👉 https://books.toscrape.com
افتح أدوات المطور.
اضغط على اسم كتاب.
راقب الكود. هل الاسم داخل <h3> أو <a> أو <div>؟
جرب تتبع السعر أيضًا بنفس الطريقة.
🧠 تلميح للمحاضرة القادمة:
الآن بعد ما عرفنا كيف نفهم البيانات داخل صفحات الويب، سنتعلم كيف نكتب كود Python يستخدم requests و BeautifulSoup لاستخلاص هذه البيانات برمجيًا.
🔥3
ان شاءالله كل اسبوع فيه ساعة في محادثة جماعية للاجابة وتوضيح كل الاسئلة 🔥🔥
🔥2
🛠️ 1. ما هي العناصر الديناميكية؟
المواقع الديناميكية تقوم بتحميل البيانات باستخدام JavaScript، ما يعني أن المحتوى لا يظهر مباشرة في مصدر HTML. لذلك نحتاج إلى أدوات تحاكي تصفح المستخدم، وهنا يأتي دور Selenium.
🧰 2. ما هو Selenium؟
هي مكتبة Python تتيح لك فتح متصفح حقيقي (أو وهمي)، والتفاعل مع الموقع كما لو كنت مستخدمًا بشريًا: تضغط أزرار، تكتب، تنتظر، تنقر، وتسحب بيانات.
✅ 3. المتطلبات:
pip install selenium
ثم نحتاج إلى تحميل WebDriver (مثل ChromeDriver) المناسب لإصدار متصفحك.
📦 4. مثال عملي: الدخول إلى Google والبحث
from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.common.keys import Keys import time # فتح المتصفح driver = webdriver.Chrome() # تأكد من أن chromedriver في PATH driver.get("https://www.google.com") # البحث عن عنصر الإدخال search_box = driver.find_element(By.NAME, "q") search_box.send_keys("OpenAI ChatGPT") search_box.send_keys(Keys.RETURN) # انتظار النتائج time.sleep(2) # طباعة النتائج results = driver.find_elements(By.CSS_SELECTOR, "h3") for r in results[:5]: print(r.text) driver.quit()
فتح المتصفح
انتظار العناصر
التفاعل معها
استخراج البيانات
إغلاق المتصفح

💡 أمثلة إضافية:
📌 النقر على زر:
button = driver.find_element(By.ID, "submit") button.click()
⌛ استخدام الانتظار الذكي:
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC wait = WebDriverWait(driver, 10) element = wait.until(EC.presence_of_element_located((By.ID, "myID")))
⚠️ نصائح:
استخدم WebDriverWait بدلاً من time.sleep للسرعة.
احترم قواعد الموقع ولا تزعج السيرفرات بكثرة الطلبات.
لا تستخدم Selenium في الخلفية لمواقع ضخمة جدًا، بل اجمع منها API أو Scrapy إذا أمكن.
✅ تطبيق عملي للمحاضرة:
### 🧠 كيف يعمل Selenium؟
🔍 Selenium أداة مفتوحة المصدر تُستخدم لأتمتة تصفح المواقع.
#### خطوات عمل Selenium:
1. تحديد المتصفح
مثل: Chrome، Firefox، Edge.
2. فتح المتصفح عبر كود برمجي
من خلال
3. الوصول إلى رابط معين
باستخدام:
4. التعامل مع العناصر في الصفحة
باستخدام أدوات مثل:
*
*
*
5. إرسال أوامر للموقع
مثل:
* تعبئة نموذج
* الضغط على زر
* قراءة بيانات من الصفحة
6. استخراج البيانات
عبر
7. إغلاق المتصفح
باستخدام:
---
### مثال بسيط:
---
### تنبيه:
> Selenium لا يُستخدم فقط في اختبار المواقع، بل أيضًا في عمليات Web Scraping وأتمتة التسجيل والبحث وجمع البيانات تلقائيًا.
---
:)
المواقع الديناميكية تقوم بتحميل البيانات باستخدام JavaScript، ما يعني أن المحتوى لا يظهر مباشرة في مصدر HTML. لذلك نحتاج إلى أدوات تحاكي تصفح المستخدم، وهنا يأتي دور Selenium.
🧰 2. ما هو Selenium؟
هي مكتبة Python تتيح لك فتح متصفح حقيقي (أو وهمي)، والتفاعل مع الموقع كما لو كنت مستخدمًا بشريًا: تضغط أزرار، تكتب، تنتظر، تنقر، وتسحب بيانات.
✅ 3. المتطلبات:
pip install selenium
ثم نحتاج إلى تحميل WebDriver (مثل ChromeDriver) المناسب لإصدار متصفحك.
📦 4. مثال عملي: الدخول إلى Google والبحث
from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.common.keys import Keys import time # فتح المتصفح driver = webdriver.Chrome() # تأكد من أن chromedriver في PATH driver.get("https://www.google.com") # البحث عن عنصر الإدخال search_box = driver.find_element(By.NAME, "q") search_box.send_keys("OpenAI ChatGPT") search_box.send_keys(Keys.RETURN) # انتظار النتائج time.sleep(2) # طباعة النتائج results = driver.find_elements(By.CSS_SELECTOR, "h3") for r in results[:5]: print(r.text) driver.quit()
فتح المتصفح
انتظار العناصر
التفاعل معها
استخراج البيانات
إغلاق المتصفح

💡 أمثلة إضافية:
📌 النقر على زر:
button = driver.find_element(By.ID, "submit") button.click()
⌛ استخدام الانتظار الذكي:
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC wait = WebDriverWait(driver, 10) element = wait.until(EC.presence_of_element_located((By.ID, "myID")))
⚠️ نصائح:
استخدم WebDriverWait بدلاً من time.sleep للسرعة.
احترم قواعد الموقع ولا تزعج السيرفرات بكثرة الطلبات.
لا تستخدم Selenium في الخلفية لمواقع ضخمة جدًا، بل اجمع منها API أو Scrapy إذا أمكن.
✅ تطبيق عملي للمحاضرة:
قم بفتح موقع إلكتروني للوظائف (مثل Indeed أو Glassdoor)، وابحث عن وظيفة "Python Developer"، ثم استخرج أول 5 نتائج باستخدام Selenium.
### 🧠 كيف يعمل Selenium؟
🔍 Selenium أداة مفتوحة المصدر تُستخدم لأتمتة تصفح المواقع.
#### خطوات عمل Selenium:
1. تحديد المتصفح
مثل: Chrome، Firefox، Edge.
2. فتح المتصفح عبر كود برمجي
من خلال
webdriver.3. الوصول إلى رابط معين
باستخدام:
driver.get("https://example.com")4. التعامل مع العناصر في الصفحة
باستخدام أدوات مثل:
*
find_element_by_id*
find_element_by_class_name*
find_element_by_xpath5. إرسال أوامر للموقع
مثل:
* تعبئة نموذج
* الضغط على زر
* قراءة بيانات من الصفحة
6. استخراج البيانات
عبر
text أو get_attribute7. إغلاق المتصفح
باستخدام:
driver.quit()---
### مثال بسيط:
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("https://example.com")
title = driver.title
print("عنوان الصفحة:", title)
driver.quit()
---
### تنبيه:
> Selenium لا يُستخدم فقط في اختبار المواقع، بل أيضًا في عمليات Web Scraping وأتمتة التسجيل والبحث وجمع البيانات تلقائيًا.
---
:)
👏4
## 🎓 المحاضرة الرابعة: استخراج البيانات من موقع فعلي (تطبيق عملي كامل)
### 🌐 الموقع التجريبي: [quotes.toscrape.com](http://quotes.toscrape.com)
هذا الموقع مخصص لتجربة Web Scraping ويحتوي على اقتباسات ومؤلفين وتاغات.
### ✅ الهدف:
نريد استخراج:
1. جميع الاقتباسات (Quotes).
2. اسم المؤلف.
3. الكلمات المفتاحية (Tags).
---
### 🛠️ الكود الكامل مع شرح:
---
### 🔍 شرح الكود:
| السطر | الوظيفة |
| -------------------------------------- | ----------------------------------- |
|
|
|
|
---
### 🧪 النتيجة (مثال):
---
### 💪 تمرين إضافي:
⬅️ انتقل للصفحة التالية من الموقع (
وعدّل الكود ليقرأ الاقتباسات منها أيضًا.
### 🌐 الموقع التجريبي: [quotes.toscrape.com](http://quotes.toscrape.com)
هذا الموقع مخصص لتجربة Web Scraping ويحتوي على اقتباسات ومؤلفين وتاغات.
### ✅ الهدف:
نريد استخراج:
1. جميع الاقتباسات (Quotes).
2. اسم المؤلف.
3. الكلمات المفتاحية (Tags).
---
### 🛠️ الكود الكامل مع شرح:
import requests
from bs4 import BeautifulSoup
url = "http://quotes.toscrape.com"
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
quotes = soup.find_all('div', class_='quote')
for quote in quotes:
text = quote.find('span', class_='text').text
author = quote.find('small', class_='author').text
tags = [tag.text for tag in quote.find_all('a', class_='tag')]
print("📌 الاقتباس:", text)
print("✍️ المؤلف:", author)
print("🏷️ الكلمات المفتاحية:", tags)
print("-" * 50)
---
### 🔍 شرح الكود:
| السطر | الوظيفة |
| -------------------------------------- | ----------------------------------- |
|
soup.find_all('div', class_='quote') | إيجاد كل صناديق الاقتباس ||
find('span', class_='text') | جلب نص الاقتباس ||
find('small', class_='author') | جلب اسم المؤلف ||
find_all('a', class_='tag') | استخراج كل التاغات (داخل كل اقتباس) |---
### 🧪 النتيجة (مثال):
📌 الاقتباس: “The world as we have created it is a process of our thinking. It cannot be changed without changing our thinking.”
✍️ المؤلف: Albert Einstein
🏷️ الكلمات المفتاحية: ['change', 'deep-thoughts', 'thinking', 'world']
--------------------------------------------------
---
### 💪 تمرين إضافي:
⬅️ انتقل للصفحة التالية من الموقع (
http://quotes.toscrape.com/page/2/)وعدّل الكود ليقرأ الاقتباسات منها أيضًا.
🔥1
import requests from bs4 import BeautifulSoup base_url = "http://quotes.toscrape.com" url = "/page/1/" while url: print(f"🔄 قراءة الصفحة: {base_url}{url}") response = requests.get(base_url + url) soup = BeautifulSoup(response.text, "html.parser") quotes = soup.find_all("div", class_="quote") for quote in quotes: text = quote.find("span", class_="text").text author = quote.find("small", class_="author").text tags = [tag.text for tag in quote.find_all("a", class_="tag")] print("📌 الاقتباس:", text) print("✍️ المؤلف:", author) print("🏷️ الكلمات المفتاحية:", tags) print("-" * 50) # نحاول العثور على رابط الصفحة التالية next_btn = soup.find("li", class_="next") if next_btn: url = next_btn.find("a")["href"] else: url = None ``🔍 شرح مبسط:
الكودالوظيفةwhile url:نكرر طالما هناك صفحة قادمةsoup.find_all(...)استخراج كل الاقتباسات من الصفحةnext_btn = soup.find(...)البحث عن زر الصفحة التاليةnext_btn.find("a")["href"]استخراج رابط الصفحة التالية (مثلاً: /page/2/)
✅ ماذا يفعل البرنامج الآن؟
🔁 يقوم بالخطوات التالية:
يبدأ من الصفحة الأولى.
يجمع الاقتباسات والمؤلفين والكلمات المفتاحية.
ينتقل تلقائيًا إلى الصفحة التالية.
يكرر العملية حتى تنتهي الصفحات.
-------------------------------------------------------
التعامل مع الصفحات الديناميكية باستخدام Selenium وJavaScript**
---
## ✅ ما ستتعلمه:
* ما هي الصفحات الديناميكية؟
* الانتظار حتى يتم تحميل العناصر.
* تنفيذ أوامر JavaScript داخل الصفحة.
* التعامل مع المواقع التي تستخدم Lazy Loa
## ⚙️ 1. ما هي الصفحات الديناميكية؟
الصفحات الديناميكية لا تعرض كل البيانات مباشرة عند تحميل الصفحة. بل يتم تحميل المحتوى جزئيًا باستخدام JavaScript بعد فتح الصفحة (مثل مواقع التواصل).
---
## 🕒 2. الانتظار حتى تظهر العناصر – WebDriverWait
### مثال:
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
driver.get("https://example.com")
element = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.ID, "dynamicElement"))
)
💡 هذا الكود ينتظر 10 ثوانٍ كحد أقصى حتى يظهر عنصر معين.
---
## 💡 3. تنفيذ JavaScript داخل الصفحة
أحيانًا تحتاج لتنفيذ JavaScript داخل المتصفح مباشرة، مثل التمرير للأسفل.
### مثال:
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")---
## ♾️ 4. التعامل مع صفحات الـ Infinite Scroll
### مثال:
import time
last_height = driver.execute_script("return document.body.scrollHeight")
while True:
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
time.sleep(2)
new_height = driver.execute_script("return document.body.scrollHeight")
if new_height == last_height:
break
last_height = new_height
🔁 هذا الكود يقوم بالتمرير للأسفل باستمرار حتى لا يتم تحميل محتوى جديد.
---
## 🎯 تطبيق عملي:
جرّب فتح موقع مثل [quotes.toscrape.com/scroll](http://quotes.toscrape.com/scroll) واكتب سكربت يقوم بتمرير الصفحة حتى النهاية وجمع كل الاقتباسات المعروضة.
:)
❤2
معليش اذا في بعض الكلمات غير واضحة بس انا برسل لي Ai ليعييد تنسيق النصوص🔥❤️
والمهم الان سندخل في الجزئية الصعبة والمهمة
والمهم الان سندخل في الجزئية الصعبة والمهمة
ان شاءالله يوم الاربعاء سيكون في محادثة جماعية في القناة للجواب عن الاسئلة والنقاش لمدة ساعة❤️
# 🎓 المحاضرة 5_1: التعامل مع النماذج (Forms) وتسجيل الدخول تلقائيًا باستخدام Selenium
---
## ✅ ما ستتعلمه:
* كيفية ملء حقول الإدخال مثل البريد وكلمة المرور.
* الضغط على أزرار مثل "Login" أو "Submit".
* تسجيل الدخول إلى مواقع تتطلب مصادقة.
---
## 🧾 1. ملء الحقول النصية في نموذج تسجيل دخول
### مثال:
---
## 🟩 2. الضغط على زر الدخول (Login Button)
### مثال:
أو باستخدام
---
## 🛡️ 3. الانتظار حتى يتم تسجيل الدخول بنجاح
### مثال:
---
## 🔐 4. تطبيق عملي على موقع وهمي للتسجيل
### مثال عملي على موقع [httpbin.org/forms/post](https://httpbin.org/forms/post):
---
## ⚠️ نصيحة أمنية
لا تستخدم كلمات مرور حقيقية أو حساباتك الأساسية أثناء التجارب.
---
## ✅ الآن أصبح بإمكانك:
* التعامل مع أي نموذج تسجيل.
* تسجيل الدخول آليًا إلى مواقعك.
* تنفيذ أي عملية تتطلب إدخال بيانات.
:)
---
## ✅ ما ستتعلمه:
* كيفية ملء حقول الإدخال مثل البريد وكلمة المرور.
* الضغط على أزرار مثل "Login" أو "Submit".
* تسجيل الدخول إلى مواقع تتطلب مصادقة.
---
## 🧾 1. ملء الحقول النصية في نموذج تسجيل دخول
### مثال:
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
driver.get("https://example.com/login")
# تعبئة البريد الإلكتروني
driver.find_element(By.NAME, "email").send_keys("test@example.com")
# تعبئة كلمة المرور
driver.find_element(By.NAME, "password").send_keys("yourpassword")---
## 🟩 2. الضغط على زر الدخول (Login Button)
### مثال:
driver.find_element(By.XPATH, "//button[@type='submit']").click()أو باستخدام
By.ID, By.CLASS_NAME, إلخ حسب الزر.---
## 🛡️ 3. الانتظار حتى يتم تسجيل الدخول بنجاح
### مثال:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.ID, "dashboard"))
)---
## 🔐 4. تطبيق عملي على موقع وهمي للتسجيل
### مثال عملي على موقع [httpbin.org/forms/post](https://httpbin.org/forms/post):
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
driver.get("https://httpbin.org/forms/post")
driver.find_element(By.NAME, "custname").send_keys("Ali")
driver.find_element(By.NAME, "custtel").send_keys("123456789")
driver.find_element(By.NAME, "custemail").send_keys("ali@example.com")
driver.find_element(By.XPATH, "//button[@type='submit']").click()---
## ⚠️ نصيحة أمنية
لا تستخدم كلمات مرور حقيقية أو حساباتك الأساسية أثناء التجارب.
---
## ✅ الآن أصبح بإمكانك:
* التعامل مع أي نموذج تسجيل.
* تسجيل الدخول آليًا إلى مواقعك.
* تنفيذ أي عملية تتطلب إدخال بيانات.
:)
🙏2