شعار proxyscrape داكن

كشط الويب باستخدام الحساء الميكانيكي

بايثون, كيف, كشط, سبتمبر-12-20245 دقائق للقراءة

أصبح كشط الويب أداة أساسية في العصر الرقمي، خاصةً لمطوري الويب ومحللي البيانات والمسوقين الرقميين. تخيل القدرة على استخراج المعلومات القيمة من المواقع الإلكترونية بسرعة وكفاءة. هنا يأتي دور MechanicalSoup. سوف يستكشف هذا الدليل تعقيدات استخدام MechanicalSoup لكشط الويب، ويقدم رؤى ونصائح عملية لتبدأ.

دور الحساء الميكانيكي في كشط الويب

ميكانيكالسوب هي مكتبة بايثون مصممة لتبسيط عملية كشط الويب من خلال توفير واجهة مباشرة لأتمتة التفاعلات مع صفحات الويب. وهي تتعامل بكفاءة مع النماذج والروابط ويمكنها التنقل بكفاءة في المواقع التي تتطلب إجراءات المستخدم الأساسية مثل عمليات إرسال النماذج وتصفح الروابط. وهذا يجعلها مثالية لأتمتة المهام على مواقع الويب ذات المحتوى الثابت حيث لا تتطلب سلوكيات المستخدم المعقدة.

الشروع في إعداد ميكانيكالسوب لقشط الويب

قبل أن نتعمق في تفاصيل كشط الويب، دعنا أولاً نبدأ بإعداد MechanicalSoup. عملية التثبيت مباشرة ويمكن إكمالها في بضع خطوات.

تثبيت الحساء الميكانيكي

لتثبيت MechanicalSoup، ستحتاج إلى تثبيت Python على جهازك. يمكنك بعد ذلك استخدام pip، مثبت حزم Python، لتثبيت MechanicalSoup. افتح طرفك واكتب الأمر التالي:

تثبيت الحساء الميكانيكي

إعداد البيئة المحيطة بك

بمجرد تثبيت MechanicalSoup، يعد إعداد بيئة التطوير الخاصة بك أمرًا بالغ الأهمية. ستحتاج إلى محرر أكواد، مثل Visual Studio Code أو PyCharm، لكتابة وتشغيل نصوص Python البرمجية الخاصة بك. تأكد أيضًا من تثبيت مكتبات "BeautifulSoup" و"الطلبات".

الخطوات الأولى مع الحساء الميكانيكي

يتضمن إنشاء أول برنامج نصي لكشط الويب باستخدام MechanicalSoup بعض الخطوات الأساسية. ابدأ باستيراد المكتبات الضرورية وتهيئة كائن المتصفح. إليك مثال بسيط لتبدأ به:

استيراد الحساء الميكانيكي
المتصفح = mechanicalsoup.StatefulBrowser()
browser.open("https://www.scrapethissite.com/pages/")

فهم أساسيات كشط الويب باستخدام ميكانيكالسوب

الآن بعد أن قمنا بإعداد MechanicalSoup دعونا نستكشف أساسيات كشط الويب. إن فهم هذه الأساسيات سيمكنك من إنشاء نصوص برمجية أكثر تعقيدًا للكشط.

التعامل مع النماذج

في MechanicalSoup، يُستخدم أسلوب "select_form()" لتحديد موقع النماذج والتعامل معها.
الحجة إلى حدد_الشكل() هو محدد CSS. في المثال البرمجي أدناه، نحن نستخدم هذا الموقع لملء نموذج بحث بسيط من حقل واحد. نظرًا لأنه في حالتنا هذه لا يوجد سوى نموذج واحد في الصفحة, المتصفح.select_form() سيفي بالغرض. وإلا فسيتعين عليك إدخال محدد css إلى حدد_الشكل() الطريقة
بالإضافة إلى ذلك، لعرض الحقول الموجودة في النموذج، يمكنك استخدام طباعة_ملخص() الطريقة. سيوفر لك هذا معلومات مفصلة عن كل حقل. بالنظر إلى أن النموذج يحتوي على نوعين من العناصر - حقول نصية وأزرار - سيكون علينا فقط ملء الحقل النصي ثم إرسال النموذج:

استيراد الحساء الميكانيكي


المتصفح = mechanicalsoup.StatefulBrowser()
browser.open("https://www.scrapethissite.com/pages/forms/?page_num=1")

# حدد النموذج
البحث_النموذج = browser.select_form()

طباعة(search_form.print_summary()))
Search_form.set("q",'test')

المتصفح.submit_selected()

إليك نتيجة الكود أعلاه.

<input class="form-control" id="q" name="q" placeholder="Search for Teams" type="text"/>
<input class="btn btn-primary" type="submit" value="Search"/>

معالجة ترقيم الصفحات

غالبًا ما يتضمن كشط الويب التعامل مع صفحات متعددة من البيانات. لا يوفر موقع MechanicalSoup مباشرةً ميزة ترقيم الصفحات باستخدام روابط ترقيم الصفحات.
في مثال الموقع الإلكتروني الذي نستخدمه يبدو ترقيم الصفحات على النحو التالي:

فيما يلي كيف تبدو بنية HTML:

 
So what we will do is first select the list that holds the pagination links with "browser.page.select_one('ul.pagination')".
Then with ".select('li')[1::]" we select all "<li>" elements inside 'pagination' list starting from the second element. This will return a list of "<li>" elements and then we paginate each one of them in a "for loop" starting from the second element and for each "<li>" element we extract the "<a>" tag and then use it in "follow_link()" method to navigate to that page.
Here is the full example:  

استيراد الحساء الميكانيكي


المتصفح = mechanicalsoup.StatefulBrowser()
browser.open("https://www.scrapethissite.com/pages/forms/?page_num=1")

للرابط في المتصفح.page.select_one('ul.pagination').select('li')[1:::]:
    رابط_الصفحة_التالية = link.select_one('a')
    المتصفح.اتبع_الرابط(الرابط_الصفحة_التالية)
   طباعة(browser.url)

إعداد الوكلاء

عند كشط مواقع الويب أو أتمتة تفاعلات الويب، يمكن أن يكون استخدام البروكسيات أمرًا بالغ الأهمية لتجاوز القيود الجغرافية أو إدارة حدود المعدل أو منع حظر بروتوكول الإنترنت. باستخدام MechanicalSoup بالاشتراك مع مكتبة "الطلبات" يمكننا دمج تكوينات البروكسي بسلاسة، مما يتيح لك الاستفادة من هذه المزايا بفعالية. إليك كيفية إعداد البروكسيات في MechanicalSoup لمهام كشط الويب الخاصة بك:

import mechanicalsoup
import requests

def create_proxy_browser():
    # Define your proxy configuration (example values)
    proxies = {
        "http": "rp.proxyscrape.com:6060:username:password",
        "https": "rp.proxyscrape.com:6060:username:password",
    }

    # Create a session object with proxy settings
    session = requests.Session()
    session.proxies.update(proxies)

    # Optionally, you can add headers or other session settings here
    session.headers.update({
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36'
    })

    # Create a MechanicalSoup StatefulBrowser using the configured session
    browser = mechanicalsoup.StatefulBrowser(session=session)
    return browser

# Usage
browser = create_proxy_browser()
response = browser.open("https://www.scrapethissite.com/pages/forms/?page_num=1")
print(response.text)  # Outputs the content of the page

الاعتبارات الأخلاقية والقانونية في البحث عن المواقع الإلكترونية

يمكن أن يثير تجريف الويب مخاوف أخلاقية وقانونية. من الضروري فهم هذه الاعتبارات لتجنب المشاكل المحتملة.

احترام سياسات الموقع الإلكتروني

تحقق دائمًا من شروط خدمة الموقع الإلكتروني قبل الكشط. تحظر بعض المواقع الكشط بشكل صريح، بينما قد يكون لدى البعض الآخر إرشادات محددة. يمكن أن يؤدي تجاهل هذه السياسات إلى عواقب قانونية.

تجنب التحميل الزائد على الخوادم

يمكن أن تؤدي الطلبات المتكررة إلى موقع إلكتروني ما إلى زيادة التحميل على خوادمه، مما يتسبب في حدوث اضطرابات. استخدم تأخيرات بين الطلبات واحترم ملف 'robots.txt' الخاص بالموقع الإلكتروني لمنع ذلك. إليك كيفية إضافة تأخير:

استيراد الوقت
الوقت.سكون(2) # تأخير لمدة 2 ثانية

خصوصية البيانات

تأكد من أن البيانات التي تقوم بكشطها لا تنتهك لوائح الخصوصية، مثل اللائحة العامة لحماية البيانات. يجب التعامل مع المعلومات الشخصية بعناية وعدم جمعها إلا عند الضرورة.

الخاتمة

يوفر كشط الويب باستخدام MechanicalSoup حلاً قويًا ومرنًا لمطوري الويب ومحللي البيانات والمسوقين الرقميين. من خلال اتباع الخطوات الموضحة في هذا الدليل، يمكنك استخراج البيانات القيمة من المواقع الإلكترونية بكفاءة، وأتمتة المهام المتكررة، واكتساب ميزة تنافسية في مجال عملك.

سواء كنت محترفاً متمرساً أو مبتدئاً، توفر لك ميكانيكال سوب الأدوات التي تحتاجها لتحقيق النجاح. تذكر دائماً مراعاة الجوانب الأخلاقية والقانونية واتباع أفضل الممارسات وتحسين مهاراتك باستمرار.

هل أنت جاهز للارتقاء بمهاراتك في كشط الويب إلى المستوى التالي؟ ابدأ بالتجربة مع MechanicalSoup اليوم وأطلق العنان للإمكانات الكاملة لاستخراج بيانات الويب. كشط سعيد!