تستخدم متصفحات الويب جافا سكريبت لإنشاء تجربة ديناميكية وتفاعلية للمستخدم. يتم ترميز معظم التطبيقات والوظائف التي تجعل من الإنترنت أمرًا لا غنى عنه في الحياة العصرية في شكل جافا سكريبت. وبالنظر إلى التجسيدات المبكرة لجافا سكريبت، كانت صفحات الويب ثابتة، ولم تكن تقدم تفاعلاً يذكر للمستخدم سوى النقر على الروابط وتحميل صفحات جديدة.
فيما يلي بعض التحسينات الديناميكية للموقع الإلكتروني التي يتم تنفيذها بواسطة Javascript.
يمكنك استخدام الكشط لجمع البيانات المنظمة من المواقع الإلكترونية بطريقة آلية. يُعرف كشط الويب أيضًا باسم استخراج بيانات الويب. بعض حالات الاستخدام الرئيسية لكشط الويب هي:
دعونا نفهم أولاً الحاجة إلى كشط المواقع الإلكترونية.
تستخدم الشركات كشط الويب للاستفادة من الكم الهائل من البيانات المتاحة للجمهور لاتخاذ قرارات أكثر ذكاءً. فيما يلي بعض المجالات التي يتم فيها استخدام كشط الويب.
فيما يلي الأسباب التي تجعل الشركات بحاجة إلى كشط مواقع الويب.
Automation – It is not possible to copy and paste each piece of information from a website. The companies use scraping softwares to automate most of their associated processes.
Data Management – You can not use databases and spreadsheets to manage numerals and figures on a website configured in HTML. So, the companies use web scraping tools for managing their data.
Real Estate Listing – The real estate agents use web scraping for populating their database of available properties for rent or for sale.
Shopping Site Comparison Data – The companies use web scraping to scrape pricing and product data from each retailer, so that they can provide their users with the comparison data they desire.
Industry Statistics and Insights – The companies use scraping for building massive databases and drawing industry-specific insights from these. For instance, a company can scrape and analyze tons of data about oil prices. It can then sell their insights to oil companies across the world.
دعنا نرى كيف يمكنك استخدام سيلينيوم لكشط مواقع جافا سكريبت.
يمكنك تثبيت سيلينيوم باستخدام الأمر التالي.
pip install selenium
هل تعلم أن سيلينيوم يحاكي متصفحًا فعليًا؟ إنه لا يستخدم تثبيت الكروم الخاص بك، بل يستخدم برنامج تشغيل لتشغيل متصفح. تشير برامج تشغيل الويب الخاصة بـ Selenium إلى كل من روابط اللغة وتطبيقات الشيفرة البرمجية التي تتحكم في المتصفح الفردي. عليك تنزيل برنامج تشغيل الويب، ويمكنك إضافته إلى متغير بيئة المسار. سنستخدم برنامج تشغيل الويب فايرفوكس ويمكنك تثبيته باتباع هذا الرابط.
دعونا ننظر في مثال سيلينيوم بسيط يتضمن جمع عنوان موقع ويب. لهذا، سنقوم أولاً باستيراد webdriver من سيلينيوم في ملف بايثون كما هو موضح أدناه:
from selenium import webdriver
علينا أن نذكر المسار الذي يوجد فيه سائق الويب. بعد ذلك، علينا تهيئة برنامج تشغيل الويب الخاص بفايرفوكس.
WEBDRIVER_PATH = './'
driver = webdriver.Firefox(WEBDRIVER_PATH)
Now we define the URL to get the title of the website.
URL = 'https://www.google.com'
driver.get(URL)
print (driver.title)
تشغيل الكود أعلاه يفتح نافذة فايرفوكس التي تطبع عنوان الموقع الإلكتروني في وحدة التحكم. لقد حددنا عنوان URL الخاص بـ Google كمثال في هذه الحالة، لذا ستكون النتيجة هكذا:
هذه هي صفحة google من برنامج تشغيل الويب الخاص بـ Firefox. سيكون العنوان المطبوع على وحدة التحكم كما يلي:
We have to manually close the firefox window that was opened. We will add driver.quit() at the end of our code so that the window will be automatically closed after the job is done.
from selenium import webdriver
WEBDRIVER_PATH = './'
driver = webdriver.Firefox(WEBDRIVER_PATH)
URL = 'https://www.google.com'
driver.get(URL)
print (driver.title)
driver.quit()
في حالة رغبتك في جمع البيانات من موقع ويب ديناميكي، يمكنك اتباع نفس الخطوات المذكورة أعلاه. على سبيل المثال، إذا كنت تريد استرداد عنوان Youtube، يمكنك استخدام الكود أدناه.
from selenium import webdriver
WEBDRIVER_PATH = './'
driver = webdriver.Firefox(WEBDRIVER_PATH)
URL = 'https://www.youtube.com'
driver.get(URL)
print (driver.title)
driver.quit()
Let’s try something new here. We can edit the search box and fill it with the word “Selenium” by using the “Keys” class as shown below.
from selenium.webdriver.common.keys import Keys
بعد تهيئة برنامج تشغيل الويب في Firefox والحصول على عنوان Youtube، نقوم بإنشاء كائن يحتوي على مربع البحث باستخدام xpath.
search_box = driver.find_element_by_xpath('//input[@id="search"]')
ثم نعدل محتوى مربع البحث ونملأه بكلمة "سيلينيوم".
search_box.send_keys('Selenium')
Once we fill the search box with our desired content, we can press “Enter” to make the search active.
search_box.send_keys(Keys.ENTER)
You can see in the below image that the Youtube search box contains the word “Selenium”.
البروكسيات مطلوبة عندما تحتاج إلى محتوى ويب مترجم. وهي مطلوبة أيضًا عندما ترسل الكثير من الطلبات إلى موقع ويب في فترة زمنية قصيرة. أنت بحاجة إلى وكلاء لـ Selenium عندما يكون الاختبار الآلي مطلوبًا. ومع ذلك، من أجل استخدام وكيل سيلينيوم لكشط موقع ويب جافا سكريبت، تحتاج إلى استخدام سلك سيلينيوم الذي يوسع روابط سيلينيوم ويتيح الوصول إلى الطلبات الأساسية التي يقدمها المتصفح.
لاستخدام سيلينيوم مع وكيل، فإن الحزمة التالية هي الحزمة التي تحتاج إلى تثبيتها.
from selenium wire import webdriver
بعد تثبيت مكتبة Python selenium-wire، تحتاج إلى ذكر ما يلي:
ذكرنا هنا رقم المنفذ العشوائي 8080 كمثال. يمكنك تعيين اسم المستخدم وكلمة المرور وعنوان URL لموقع الويب المطلوب من اختيارك.
proxy_username = "USER_NAME"
proxy_password = "PASSWORD"
proxy_url = "Any Website URL"
proxy_port = 8080
options = {
"proxy": {
"http": f"http://{proxy_username}:{proxy_password}@{proxy_url}:{proxy_port}",
"verify_ssl": False,
},
}
بالنسبة لبرنامج تشغيل الويب Selenium، فإن الوكلاء المقيمين هم الخيار الأفضل. ذلك لأنه لا يمكن اكتشافها بسهولة على عكس وكلاء مراكز البيانات. فهي توجه طلبات العملاء من خلال عناوين IP السكنية وتكسب ثقة أكبر من عناوين IP الخاصة بمراكز البيانات. كما أنها مفيدة في الوصول إلى مواقع الويب المعقدة التي تستخدم جافا سكريبت مثل يوتيوب وجوجل وإنستجرام وغيرها.
تحتاج إلى استخدام البروكسيات لكشط موقع ويب للأسباب التالية:
تجريف الويب مهم حيث يمكنك استخدامه من أجل:
ناقشنا كذلك كيف يمكنك استخدام سيلينيوم لكشط مواقع الويب المميزة بجافا سكريبت في بايثون. يمكنك كشط محتوى المواقع الثابتة وكذلك المواقع الديناميكية مثل Youtube. تحتاج أيضًا إلى استخدام وكلاء سيلينيوم للاختبار الآلي. أفضل البروكسيات التي يمكنك استخدامها هي البروكسيات السكنية لأنها سريعة للغاية ولا يمكن اكتشافها بسهولة على عكس البروكسيات الأخرى.
آمل أن تكون قد فهمت كيفية كشط موقع جافا سكريبت باستخدام بايثون.