Selenium برنامج تعليمي لـ VBA في Excel (متصفح Chrome)ping)
⚡ ملخص ذكي
Selenium يقوم VBA في Excel بالأتمتة Google Chrome لاستخراج البيانات من صفحات الويب بتنسيق HTML، باستخدام Selenium مكتبة الأنواع وطرق WebDriver لفتح موقع، وتحديد عناصر الجدول حسب الفئة والوسم، وكتابة النتائج في خلايا ورقة العمل.

ما هو مسح البيانات؟ping باستخدام Selenium?
Selenium هي أداة أتمتة تسهل عملية المسح الضوئيping معلومات من صفحات الويب بتنسيق HTML، وتنفيذ عملية استخراج البيانات من الويبping مع Google Chromeفي برنامج إكسل، Selenium تتيح مكتبة الأنواع لـ VBA تشغيل متصفح حقيقي بدلاً من محرك Internet Explorer القديم.
كيفية إعداد ماكرو Excel قبل استخراج البياناتping باستخدام Selenium
هناك متطلبات مسبقة معينة يجب تنفيذها على ملف ماكرو Excel قبل بدء عملية استخراج البياناتping .
وهذه المتطلبات الأساسية هي كالتالي:
الخطوة 1) افتح ماكرو قائم على برنامج Excel وقم بالوصول إلى خيار المطور في Excel.
الخطوة 2) حدد خيار Visual Basic الموجود ضمن شريط أدوات المطور.
الخطوة 3) أدخل وحدة نمطية جديدة.
الخطوة 4) قم بإنشاء روتين فرعي جديد وقم بتسميته test2.
Sub test2() End Sub
ستكون النتيجة في الوحدة النمطية كما يلي:
الخطوة 5) يمكنك الوصول إلى خيار "المرجع" ضمن علامة التبويب "الأدوات" والإشارة إلى Selenium مكتبة الأنواع. تساعد هذه المكتبة في فتح Google Chrome ويسهل كتابة البرامج النصية الكلية.
أصبح ملف Excel الآن جاهزًا للتفاعل مع المتصفح. الخطوة التالية هي دمج برنامج نصي (ماكرو) يُسهّل عملية استخراج البيانات.ping بلغة HTML.
كيفية فتح Google Chrome باستخدام فبا
إليك خطوات الفتح Google Chrome باستخدام لغة VBA.
الخطوة 1) قم بتعريف وتهيئة المتغيرات في البرنامج الفرعي كما هو موضح أدناه.
Sub test2() Dim driver As New WebDriver Dim rowc, cc, columnC As Integer
الخطوة 2) لفتح Google Chrome استخدام Selenium وباستخدام VBA، اكتب برنامج التشغيل. ابدأ تشغيل "Chrome" واضغط على F5.
سيكون الكود التالي:
Sub test2() Dim driver As New WebDriver Dim rowc, cc, columnC As Integer driver.Start "Chrome" Application.Wait Now + TimeValue("00:00:20") End Sub
ستكون نتيجة الوحدة على النحو التالي:
كيفية فتح موقع ويب في Google Chrome باستخدام فبا
بمجرد أن تتمكن من الوصول Google Chrome باستخدام لغة VBA، تتمثل الخطوة التالية في الوصول إلى موقع ويب باستخدام VBA. ويتم ذلك من خلال دالة Get، حيث URL يتم تمريرها كعلامات اقتباس مزدوجة.
سيبدو شكل الوحدة كما يلي:
اضغط على F5 لتشغيل الماكرو. ستُفتح صفحة الويب التالية في Google Chrome كما هو مبين.
Sub test2() Dim driver As New WebDriver Dim rowc, cc, columnC As Integer driver.Start "Chrome" driver.Get "https://demo.guru99.com/test/web-table-element.php" Application.Wait Now + TimeValue("00:00:20") End Sub
أصبح ماكرو Excel الآن جاهزًا لتنفيذ عملية المسح الضوئيping المهام. توضح الخطوة التالية كيفية استخراج المعلوماتtracتيد عن طريق التطبيق Selenium و VBA.
كيفية استخراج المعلومات من موقع ويب باستخدام VBA
لنفترض أن المتداول اليومي يرغب في الوصول إلى البيانات من الموقع الإلكتروني يوميًا. في كل مرة ينقر فيها المتداول اليومي على الزر، يجب أن يتم جلب بيانات السوق تلقائيًا إلى برنامج Excel.
من الموقع الإلكتروني المذكور أعلاه، من الضروري فحص أحد العناصر وملاحظة كيفية تنظيم البيانات. للوصول إلى شفرة المصدر HTML أدناه، اضغط على مفتاحي Ctrl + Shift + أنا.
<table class="datatable">
<thead>
<tr>
<th>Company</th>
<th>Group</th>
<th>Pre Close (Rs)</th>
<th>Current Price (Rs)</th>
<th>% Change</th>
</tr>
كما تلاحظ، البيانات مُهيكلة في جدول HTML واحد. لذا، لاستخراج البيانات كاملةً من هذا الجدول، عليك تصميم ماكرو يستخرج معلومات رأس الجدول والبيانات المرتبطة به. نفّذ المهام التالية.
الخطوة 1) قم بصياغة حلقة تكرارية (For loop) تمر عبر معلومات رأس HTML كمجموعة. Selenium يقوم برنامج التشغيل بتحديد معلومات الرأس باستخدام طريقتي FindElementByClass() و FindElementByTag()، كما هو موضح.
Sub test2() Dim driver As New WebDriver Dim rowc, cc, columnC As Integer rowc = 2 Application.ScreenUpdating = False driver.Start "chrome" driver.Get "https://demo.guru99.com/test/web-table-element.php" For Each th In driver.FindElementByClass("dataTable").FindElementByTag("thead").FindElementsByTag("tr") cc = 1 For Each t In th.FindElementsByTag("th") Sheet2.Cells(1, cc).Value = t.Text cc = cc + 1 Next t Next th
الخطوة 2) بعد ذلك، Selenium يستخدم برنامج التشغيل أسلوبًا مشابهًا لتحديد موقع بيانات الجدول. اكتب الكود التالي:
Sub test2() Dim driver As New WebDriver Dim rowc, cc, columnC As Integer rowc = 2 Application.ScreenUpdating = False driver.Start "chrome" driver.Get "https://demo.guru99.com/test/web-table-element.php" For Each th In driver.FindElementByClass("dataTable").FindElementByTag("thead").FindElementsByTag("tr") cc = 1 For Each t In th.FindElementsByTag("th") Sheet2.Cells(1, cc).Value = t.Text cc = cc + 1 Next t Next th For Each tr In driver.FindElementByClass("dataTable").FindElementByTag("tbody").FindElementsByTag("tr") columnC = 1 For Each td In tr.FindElementsByTag("td") Sheet2.Cells(rowc, columnC).Value = td.Text columnC = columnC + 1 Next td rowc = rowc + 1 Next tr Application.Wait Now + TimeValue("00:00:20") End Sub
يمكن تهيئة برنامج Excel باستخدام خاصية النطاق أو خاصية الخلايا في ورقة العمل. ولتبسيط نص VBA البرمجي، تُهيأ بيانات المجموعة باستخدام خاصية الخلايا في ورقة العمل الثانية في المصنف. وتساعد خاصية النص في وضع النص ضمن وسم HTML.
Sub test2() Dim driver As New WebDriver Dim rowc, cc, columnC As Integer rowc = 2 Application.ScreenUpdating = False driver.Start "chrome" driver.Get "https://demo.guru99.com/test/web-table-element.php" For Each th In driver.FindElementByClass("dataTable").FindElementByTag("thead").FindElementsByTag("tr") cc = 1 For Each t In th.FindElementsByTag("th") Sheet2.Cells(1, cc).Value = t.Text cc = cc + 1 Next t Next th For Each tr In driver.FindElementByClass("dataTable").FindElementByTag("tbody").FindElementsByTag("tr") columnC = 1 For Each td In tr.FindElementsByTag("td") Sheet2.Cells(rowc, columnC).Value = td.Text columnC = columnC + 1 Next td rowc = rowc + 1 Next tr Application.Wait Now + TimeValue("00:00:20") End Sub
ستبدو وحدة VBA كما يلي:
الخطوة 3) بعد تجهيز نص الماكرو، قم بتعيين الإجراء الفرعي لزر في برنامج Excel ثم اخرج من وحدة VBA. سمِّ الزر "تحديث" أو أي اسم مناسب آخر. في هذا المثال، الزر مُسمى "تحديث".
الخطوة 4) اضغط على زر التحديث للحصول على الناتج أدناه.
الخطوة 5) قارن النتائج في برنامج Excel مع النتائج في Google Chrome.












