🧩 محتوى المحاضرة:
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
ان شاءالله من الغد نواصل المحاضرات
وعيد مبارك عليكم ❤️
وعيد مبارك عليكم ❤️
🙏3
🎓 المحاضرة 6-1: التعامل مع القوائم والجداول – استخراج البيانات المنظمة
✅ ما ستتعلمه في هذه المحاضرة:
كيفية استخراج قوائم متعددة وجداول من صفحات الويب.
التعامل مع عناصر متكررة (مثل صفوف في جدول أو بطاقات في صفحة).
استخدام find_elements بدلاً من find_element.
🧠 المبدأ الأساسي:
في المواقع التي تحتوي على عناصر متكررة (مثل قائمة منتجات أو نتائج بحث)، نستخدم find_elements لاستخراج كل العناصر مرة واحدة.
💻 مثال عملي: استخراج قائمة مقالات
🔍 نصائح هامة:
تأكد أن العناصر مرئية في الصفحة قبل البحث عنها.
يمكنك استخدام XPath و CSS Selector للحصول على دقة أعلى.
دائماً افحص الصفحة باستخدام أدوات المطور (Inspect).
🧪 تطبيق عملي:
ادخل على موقع فيه جدول أو قائمة (مثلاً: قائمة أفلام، منتجات، مقالات).
استخرج كل العناصر في القائمة واطبعها.
جرب حفظها في ملف CSV.
✅ بعد هذه المحاضرة، يمكنك:
قراءة وتحليل جداول HTML من الويب.
بناء أدوات لجمع بيانات منظمة من صفحات متعددة.
التعامل مع العناصر المتكررة بطريقة برمجية احترافية.
✅ ما ستتعلمه في هذه المحاضرة:
كيفية استخراج قوائم متعددة وجداول من صفحات الويب.
التعامل مع عناصر متكررة (مثل صفوف في جدول أو بطاقات في صفحة).
استخدام find_elements بدلاً من find_element.
🧠 المبدأ الأساسي:
في المواقع التي تحتوي على عناصر متكررة (مثل قائمة منتجات أو نتائج بحث)، نستخدم find_elements لاستخراج كل العناصر مرة واحدة.
💻 مثال عملي: استخراج قائمة مقالات
📋 استخراج بيانات من جدول
rows = driver.find_elements(By.XPATH, "//table[@id='data']//tr") for row in rows: cells = row.find_elements(By.TAG_NAME, "td") for cell in cells: print(cell.text, end="\t") print() `🔍 نصائح هامة:
تأكد أن العناصر مرئية في الصفحة قبل البحث عنها.
يمكنك استخدام XPath و CSS Selector للحصول على دقة أعلى.
دائماً افحص الصفحة باستخدام أدوات المطور (Inspect).
🧪 تطبيق عملي:
ادخل على موقع فيه جدول أو قائمة (مثلاً: قائمة أفلام، منتجات، مقالات).
استخرج كل العناصر في القائمة واطبعها.
جرب حفظها في ملف CSV.
✅ بعد هذه المحاضرة، يمكنك:
قراءة وتحليل جداول HTML من الويب.
بناء أدوات لجمع بيانات منظمة من صفحات متعددة.
التعامل مع العناصر المتكررة بطريقة برمجية احترافية.
🎓 المحاضرة 6-2: التفاعل مع عناصر الصفحة – الضغط، الكتابة، التحديد
✅ ما ستتعلمه في هذه المحاضرة:
كيف تجعل الروبوت يتفاعل مع العناصر في صفحة الويب.
الضغط على الأزرار، ملء الحقول النصية، تحديد منسدلات.
محاكاة المستخدم الحقيقي خطوة بخطوة.
🧠 المبدأ الأساسي:
نستخدم Selenium WebDriver للتحكم بالعناصر كما يفعل الإنسان:
click() للضغط.
send_keys() للكتابة داخل حقول.
select لاختيار عناصر منسدلة.
💻 أمثلة عملية
🖱️ الضغط على زر:
⌨️ الكتابة داخل حقل:
📑 اختيار من قائمة منسدلة:
⚠️ ملاحظات هامة:
بعض العناصر تتطلب انتظار حتى تظهر.
تأكد من أن العنصر قابل للنقر أو للكتابة فيه.
استخدم WebDriverWait عند الضرورة.
🧪 تطبيق عملي:
افتح موقع تسجيل دخول.
أدخل اسم المستخدم وكلمة المرور.
اضغط زر "تسجيل الدخول".
✅ بعد هذه المحاضرة، يمكنك:
إنشاء برامج تقوم بالتسجيل التلقائي أو البحث.
بناء روبوتات تتفاعل مع واجهات الويب الذكية.
التحكم الكامل بأي عنصر في الصفحة.
✅ ما ستتعلمه في هذه المحاضرة:
كيف تجعل الروبوت يتفاعل مع العناصر في صفحة الويب.
الضغط على الأزرار، ملء الحقول النصية، تحديد منسدلات.
محاكاة المستخدم الحقيقي خطوة بخطوة.
🧠 المبدأ الأساسي:
نستخدم Selenium WebDriver للتحكم بالعناصر كما يفعل الإنسان:
click() للضغط.
send_keys() للكتابة داخل حقول.
select لاختيار عناصر منسدلة.
💻 أمثلة عملية
🖱️ الضغط على زر:
from selenium import webdriver from selenium.webdriver.common.by import By driver = webdriver.Chrome() driver.get("https://example.com") # الضغط على زر button = driver.find_element(By.ID, "submit-btn") button.click() ⌨️ الكتابة داخل حقل:
search_box = driver.find_element(By.NAME, "search") search_box.send_keys("Web scraping") 📑 اختيار من قائمة منسدلة:
from selenium.webdriver.support.ui import Select dropdown = Select(driver.find_element(By.ID, "country")) dropdown.select_by_visible_text("Egypt") ⚠️ ملاحظات هامة:
بعض العناصر تتطلب انتظار حتى تظهر.
تأكد من أن العنصر قابل للنقر أو للكتابة فيه.
استخدم WebDriverWait عند الضرورة.
🧪 تطبيق عملي:
افتح موقع تسجيل دخول.
أدخل اسم المستخدم وكلمة المرور.
اضغط زر "تسجيل الدخول".
✅ بعد هذه المحاضرة، يمكنك:
إنشاء برامج تقوم بالتسجيل التلقائي أو البحث.
بناء روبوتات تتفاعل مع واجهات الويب الذكية.
التحكم الكامل بأي عنصر في الصفحة.
🎓 المحاضرة 6-3: التعامل مع النوافذ، التبويبات، والإطارات (Windows, Tabs, Frames)
✅ ما ستتعلمه في هذه المحاضرة:
كيف تتعامل مع أكثر من تبويب أو نافذة في المتصفح.
كيفية الدخول إلى الإطارات (iframes) داخل الصفحة.
التنقل بين النوافذ دون فقدان السيطرة.
🧠 المفهوم الأساسي:
النوافذ والتبويبات (Tabs/Windows):
يتم التحكم فيها من خلال window_handles و switch_to.window.
الإطارات (iframes):
محتوى داخل الصفحة، يتم التعامل معه بشكل منفصل عبر switch_to.frame.
💻 أمثلة برمجية
🪟 التنقل بين النوافذ:
🧩 الدخول إلى iframe:
⚠️ تنبيهات:
لا يمكنك الوصول لعناصر داخل iframe إلا بعد الدخول إليه.
التبديل بين النوافذ مهم لتجنب "Element not found".
استخدم WebDriverWait إذا تأخرت النوافذ في التحميل.
🧪 تطبيق عملي مقترح:
افتح صفحة بها iframe مثل w3schools iframe example.
اقرأ محتوى داخل الـ iframe باستخدام Selenium.
ثم انتقل لنافذة أخرى، وابدأ عملية بحث.
✅ بعد هذه المحاضرة يمكنك:
بناء روبوتات تتنقل بين أكثر من موقع في وقت واحد.
قراءة بيانات من داخل iframes بكل سهولة.
العمل على صفحات ديناميكية بمرونة أكبر.
:)
✅ ما ستتعلمه في هذه المحاضرة:
كيف تتعامل مع أكثر من تبويب أو نافذة في المتصفح.
كيفية الدخول إلى الإطارات (iframes) داخل الصفحة.
التنقل بين النوافذ دون فقدان السيطرة.
🧠 المفهوم الأساسي:
النوافذ والتبويبات (Tabs/Windows):
يتم التحكم فيها من خلال window_handles و switch_to.window.
الإطارات (iframes):
محتوى داخل الصفحة، يتم التعامل معه بشكل منفصل عبر switch_to.frame.
💻 أمثلة برمجية
🪟 التنقل بين النوافذ:
from selenium import webdriver driver = webdriver.Chrome() driver.get("https://example.com") # فتح تبويب جديد driver.execute_script("window.open('https://google.com');") # الانتقال إلى التبويب الثاني driver.switch_to.window(driver.window_handles[1]) # العودة للتبويب الأول driver.switch_to.window(driver.window_handles[0]) 🧩 الدخول إلى iframe:
# التبديل إلى iframe بالاسم أو ID driver.switch_to.frame("frame_id") # تنفيذ عمليات داخل الـ iframe... # الرجوع للإطار الرئيسي driver.switch_to.default_content() ⚠️ تنبيهات:
لا يمكنك الوصول لعناصر داخل iframe إلا بعد الدخول إليه.
التبديل بين النوافذ مهم لتجنب "Element not found".
استخدم WebDriverWait إذا تأخرت النوافذ في التحميل.
🧪 تطبيق عملي مقترح:
افتح صفحة بها iframe مثل w3schools iframe example.
اقرأ محتوى داخل الـ iframe باستخدام Selenium.
ثم انتقل لنافذة أخرى، وابدأ عملية بحث.
✅ بعد هذه المحاضرة يمكنك:
بناء روبوتات تتنقل بين أكثر من موقع في وقت واحد.
قراءة بيانات من داخل iframes بكل سهولة.
العمل على صفحات ديناميكية بمرونة أكبر.
:)
W3Schools
W3Schools online HTML editor
The W3Schools online code editor allows you to edit code and view the result in your browser