## 🧠 المحاضرة الأولى: فهم بنية الويب وتعامل الآلات معها
### 🎯 أهداف المحاضرة:
* فهم كيف تعمل المواقع من الداخل.
* التمييز بين 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
# 🎓 المحاضرة 5_2: التعامل مع ملفات الـ Cookies وجلسات المستخدم (Sessions) في Web Automation
---
## ✅ ما ستتعلمه:
* ما هي ملفات الكوكيز وكيف تُستخدم.
* كيف تحفظ جلسة تسجيل الدخول.
* كيفية إعادة استخدامها لتجنب تسجيل الدخول كل مرة.
---
## 🍪 1. ما هي Cookies؟
Cookies هي ملفات نصية صغيرة يخزنها المتصفح تحتوي على معلومات عن الجلسة، مثل:
* أنك قمت بتسجيل الدخول.
* معلومات سلة التسوق.
* تفضيلاتك على الموقع.
---
## 🧪 2. عرض الكوكيز الموجودة في المتصفح
---
## 💾 3. حفظ الكوكيز في ملف
---
## 🔁 4. تحميل الكوكيز لاحقًا لإعادة استخدام الجلسة
---
## 📌 نقطة مهمة:
* يجب أن تفتح نفس النطاق (
* الكوكيز تنتهي أحيانًا، لذا تأكد من صلاحيتها.
---
## 🛠️ تطبيق عملي:
سجّل الدخول لموقع، احفظ الكوكيز في ملف، ثم أغلق المتصفح، وأعد تشغيله مع تحميل الكوكيز فقط، دون الحاجة لتسجيل الدخول من جديد.
---
## ✅ بعد هذه المحاضرة، يمكنك:
* حفظ جلسات المستخدم.
* تقليل عدد مرات تسجيل الدخول.
* تسريع أتمتة التعامل مع المواقع المقفلة.
:)
---
## ✅ ما ستتعلمه:
* ما هي ملفات الكوكيز وكيف تُستخدم.
* كيف تحفظ جلسة تسجيل الدخول.
* كيفية إعادة استخدامها لتجنب تسجيل الدخول كل مرة.
---
## 🍪 1. ما هي Cookies؟
Cookies هي ملفات نصية صغيرة يخزنها المتصفح تحتوي على معلومات عن الجلسة، مثل:
* أنك قمت بتسجيل الدخول.
* معلومات سلة التسوق.
* تفضيلاتك على الموقع.
---
## 🧪 2. عرض الكوكيز الموجودة في المتصفح
driver.get("https://example.com")
cookies = driver.get_cookies()
for cookie in cookies:
print(cookie)---
## 💾 3. حفظ الكوكيز في ملف
import json
with open("cookies.json", "w") as f:
json.dump(driver.get_cookies(), f)
---
## 🔁 4. تحميل الكوكيز لاحقًا لإعادة استخدام الجلسة
import json
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
driver.get("https://example.com")
# تحميل الكوكيز
with open("cookies.json", "r") as f:
cookies = json.load(f)
for cookie in cookies:
driver.add_cookie(cookie)
# إعادة تحميل الصفحة بعد إضافة الكوكيز
driver.refresh()
---
## 📌 نقطة مهمة:
* يجب أن تفتح نفس النطاق (
example.com) قبل إضافة الكوكيز.* الكوكيز تنتهي أحيانًا، لذا تأكد من صلاحيتها.
---
## 🛠️ تطبيق عملي:
سجّل الدخول لموقع، احفظ الكوكيز في ملف، ثم أغلق المتصفح، وأعد تشغيله مع تحميل الكوكيز فقط، دون الحاجة لتسجيل الدخول من جديد.
---
## ✅ بعد هذه المحاضرة، يمكنك:
* حفظ جلسات المستخدم.
* تقليل عدد مرات تسجيل الدخول.
* تسريع أتمتة التعامل مع المواقع المقفلة.
:)
❤2🙏2
🎓 المحاضرة 5_3: التعامل مع ملفات الـ Cookies وجلسات المستخدم (Sessions) في Web Automation
✅ ما ستتعلمه:
ما هي ملفات الكوكيز وكيف تُستخدم.
كيف تحفظ جلسة تسجيل الدخول.
كيفية إعادة استخدامها لتجنب تسجيل الدخول كل مرة.
🍪 1. ما هي Cookies؟
Cookies هي ملفات نصية صغيرة يخزنها المتصفح تحتوي على معلومات عن الجلسة، مثل:
أنك قمت بتسجيل الدخول.
معلومات سلة التسوق.
تفضيلاتك على الموقع.
🧪 2. عرض الكوكيز الموجودة في المتصفح
💾 3. حفظ الكوكيز في ملف
🔁 4. تحميل الكوكيز لاحقًا لإعادة استخدام الجلسة
📌 نقطة مهمة:
يجب أن تفتح نفس النطاق (example.com) قبل إضافة الكوكيز.
الكوكيز تنتهي أحيانًا، لذا تأكد من صلاحيتها.
🛠️ تطبيق عملي:
سجّل الدخول لموقع، احفظ الكوكيز في ملف، ثم أغلق المتصفح، وأعد تشغيله مع تحميل الكوكيز فقط، دون الحاجة لتسجيل الدخول من جديد.
✅ بعد هذه المحاضرة، يمكنك:
حفظ جلسات المستخدم.
تقليل عدد مرات تسجيل الدخول.
تسريع أتمتة التعامل مع المواقع المقفلة.
:)
✅ ما ستتعلمه:
ما هي ملفات الكوكيز وكيف تُستخدم.
كيف تحفظ جلسة تسجيل الدخول.
كيفية إعادة استخدامها لتجنب تسجيل الدخول كل مرة.
🍪 1. ما هي Cookies؟
Cookies هي ملفات نصية صغيرة يخزنها المتصفح تحتوي على معلومات عن الجلسة، مثل:
أنك قمت بتسجيل الدخول.
معلومات سلة التسوق.
تفضيلاتك على الموقع.
🧪 2. عرض الكوكيز الموجودة في المتصفح
driver.get("https://example.com") cookies = driver.get_cookies() for cookie in cookies: print(cookie) 💾 3. حفظ الكوكيز في ملف
import json with open("cookies.json", "w") as f: json.dump(driver.get_cookies(), f) 🔁 4. تحميل الكوكيز لاحقًا لإعادة استخدام الجلسة
import json from selenium import webdriver from selenium.webdriver.common.by import By driver = webdriver.Chrome() driver.get("https://example.com") # تحميل الكوكيز with open("cookies.json", "r") as f: cookies = json.load(f) for cookie in cookies: driver.add_cookie(cookie) # إعادة تحميل الصفحة بعد إضافة الكوكيز driver.refresh() 📌 نقطة مهمة:
يجب أن تفتح نفس النطاق (example.com) قبل إضافة الكوكيز.
الكوكيز تنتهي أحيانًا، لذا تأكد من صلاحيتها.
🛠️ تطبيق عملي:
سجّل الدخول لموقع، احفظ الكوكيز في ملف، ثم أغلق المتصفح، وأعد تشغيله مع تحميل الكوكيز فقط، دون الحاجة لتسجيل الدخول من جديد.
✅ بعد هذه المحاضرة، يمكنك:
حفظ جلسات المستخدم.
تقليل عدد مرات تسجيل الدخول.
تسريع أتمتة التعامل مع المواقع المقفلة.
:)
🙏2