Web scraping & Automation<--> Ai Engineering
123 subscribers
5 photos
8 links
Download Telegram
معليش اذا في بعض الكلمات غير واضحة بس انا برسل لي Ai ليعييد تنسيق النصوص🔥❤️
والمهم الان سندخل في الجزئية الصعبة والمهمة
ان شاءالله يوم الاربعاء سيكون في محادثة جماعية في القناة للجواب عن الاسئلة والنقاش لمدة ساعة❤️
المحاضره الخامسه...
# 🎓 المحاضرة 5_1: التعامل مع النماذج (Forms) وتسجيل الدخول تلقائيًا باستخدام Selenium

---

## ما ستتعلمه:

* كيفية ملء حقول الإدخال مثل البريد وكلمة المرور.
* الضغط على أزرار مثل "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. عرض الكوكيز الموجودة في المتصفح

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. عرض الكوكيز الموجودة في المتصفح
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 لاستخراج كل العناصر مرة واحدة.
💻 مثال عملي: استخراج قائمة مقالات
📋 استخراج بيانات من جدول

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 لاختيار عناصر منسدلة.
💻 أمثلة عملية
🖱️ الضغط على زر:
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.
💻 أمثلة برمجية
🪟 التنقل بين النوافذ:
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 بكل سهولة.
العمل على صفحات ديناميكية بمرونة أكبر.
:)
فتح محادثة مناقشة والرد على جميع الاسئلة على حسب التفاعل متى تريدون
Anonymous Poll
50%
مساء اليوم
50%
مساء اليوم الثاني
غدا ان شاءالله pm 7:30 ksa
ستكون محادثة جماعية للاجابة عن جميع الاسئلة في هذا المجال
👍2
اسفين على التأخر في المحاضرات
بعد ربع ساعة ان شاءالله هفتح المحادثة الصوتية لاستقبال الاسئلة
1