🎓 المحاضرة 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%
مساء اليوم الثاني
غدا ان شاءالله pm 7:30 ksa
ستكون محادثة جماعية للاجابة عن جميع الاسئلة في هذا المجال
ستكون محادثة جماعية للاجابة عن جميع الاسئلة في هذا المجال
👍2
بعد ربع ساعة ان شاءالله هفتح المحادثة الصوتية لاستقبال الاسئلة
❤1