🧩 محتوى المحاضرة:
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
فتح محادثة مناقشة والرد على جميع الاسئلة على حسب التفاعل متى تريدون
Anonymous Poll
50%
مساء اليوم
50%
مساء اليوم الثاني