خبر و ترفند روز

خبر و ترفند های روز را اینجا بخوانید!

یاد بگیرید چگونه یک بررسی کننده وضعیت وب سایت در پایتون ایجاد کنید

این آموزش پایتون را دنبال کنید و یک جستجوگر سایت خودکار با کد بسیار کم بسازید.

اگر اغلب می‌بینید که داده‌ها را از وب‌سایت‌ها واکشی می‌کنید، احتمالاً باید این فرآیند را خودکار کنید. این فرآیند که گاهی اوقات به عنوان “web scraping” نامیده می‌شود، برای سایت‌هایی که API یا فید رسمی ارائه نمی‌دهند، رایج است. البته، اگر سایتی که می‌خواهید واکشی کنید در دسترس نباشد، به جایی نخواهید رسید.

اگر شما سایت خود را اداره می کنید، احتمالاً قبلاً با خرابی مواجه شده اید. این می تواند ناامید کننده باشد، باعث از دست دادن بازدیدکنندگان شود و هر فعالیتی که ممکن است سایت شما مسئول آن باشد را قطع کند. در چنین شرایطی، ارزش دارد که بتوانید به راحتی در دسترس بودن وب سایت خود را بررسی کنید.

پایتون یک زبان عالی برای اسکریپت نویسی است و سینتکس مختصر و در عین حال قابل خواندن آن، اجرای جستجوگر سایت را به یک کار ساده تبدیل می کند.

ایجاد جستجوگر وب سایت شخصی شما

جستجوگر وب سایت برای قرار دادن چندین وب سایت به طور همزمان طراحی شده است. این به شما امکان می‌دهد به راحتی سایت‌هایی را که دیگر به آن‌ها اهمیت نمی‌دهید تغییر دهید یا شروع به بررسی سایت‌هایی کنید که در آینده راه‌اندازی می‌کنید. جستجوگر یک “برنامه اسکلت” ایده آل است که می توانید بیشتر روی آن بسازید، اما یک رویکرد اساسی برای واکشی داده های وب را نشان می دهد.

وارد کردن کتابخانه ها در پایتون

برای شروع پروژه، باید کتابخانه درخواست ها را در پایتون با تابع import وارد کنید.

import requests

کتابخانه Requests برای برقراری ارتباط با وب سایت ها مفید است. می توانید از آن برای ارسال درخواست های HTTP و دریافت داده های پاسخ استفاده کنید.

مطلب مرتبط:   نحوه وارد کردن و صادرات داده های CSV در PostgreSQL

آدرس های وب سایت را در یک لیست ذخیره کنید

پس از وارد کردن کتابخانه، باید URL های وب سایت را در یک لیست تعریف و ذخیره کنید. این مرحله به شما امکان می دهد چندین URL را حفظ کنید که می توانید آنها را با جستجوگر وب سایت بررسی کنید.

import requests
 
website_url = [
    "https://www.google.co.in",
    "https://www.yahoo.com",
    "https://www.amazon.co.in",
    "https://www.pipsnacks.com/404",
    "http://the-internet.herokuapp.com/status_codes/301",
    "http://the-internet.herokuapp.com/status_codes/500"
]

متغیر website_url لیست URL ها را ذخیره می کند. در داخل لیست، هر URL را که می خواهید بررسی کنید به عنوان یک رشته جداگانه تعریف کنید. می‌توانید از آدرس‌های اینترنتی مثال در کد برای آزمایش استفاده کنید یا می‌توانید آنها را جایگزین کنید تا فوراً سایت‌های خود را بررسی کنید.

سپس، پیام‌ها را برای کدهای پاسخ HTTP معمولی ذخیره کنید. می‌توانید اینها را در فرهنگ لغت نگه دارید و هر پیام را با کد وضعیت مربوطه آن فهرست کنید. سپس برنامه شما می تواند از این پیام ها به جای کدهای وضعیت برای خوانایی بهتر استفاده کند.

statuses = {
    200: "Website Available",
    301: "Permanent Redirect",
    302: "Temporary Redirect",
    404: "Not Found",
    500: "Internal Server Error",
    503: "Service Unavailable"
}

ایجاد یک حلقه برای بررسی وضعیت وب سایت

برای بررسی هر URL به نوبه خود، باید لیست وب سایت ها را مرور کنید. در داخل حلقه، با ارسال درخواست از طریق کتابخانه درخواست، وضعیت هر سایت را بررسی کنید.

for url in website_url:
    try:
        web_response = requests.get(url)
        print(url, statuses[web_response.status_code])
 
    except:
        print(url, statuses[web_response.status_code])

جایی که:

  • برای url… روی لیست URL ها تکرار می شود.
  • url متغیری است که حلقه for هر URL را به آن اختصاص می دهد.
  • هر استثنایی که ممکن است ایجاد شود را امتحان کنید/ استثناء می کند.
  • web_response متغیری است که یک ویژگی را با کد وضعیت پاسخ ارائه می دهد
مطلب مرتبط:   چگونه برنامه خود را از Dotnet 5 به Dotnet 6 منتقل کنید

کل قطعه کد

اگر ترجیح می دهید کل کد را یکباره مرور کنید، در اینجا لیست کد کاملی برای مرجع وجود دارد.

import requests
 
website_url = [
    "https://www.google.co.in",
    "https://www.yahoo.com",
    "https://www.amazon.co.in",
    "https://www.pipsnacks.com/404",
    "http://the-internet.herokuapp.com/status_codes/301",
    "http://the-internet.herokuapp.com/status_codes/500"
]
 
statuses = {
    200: "Website Available",
    301: "Permanent Redirect",
    302: "Temporary Redirect",
    404: "Not Found",
    500: "Internal Server Error",
    503: "Service Unavailable"
}
 
for url in website_url:
    try:
        web_response = requests.get(url)
        print(url, statuses[web_response.status_code])
 
    except:
        print(url, statuses[web_response.status_code])

و در اینجا نمونه ای از اجرای کد است:

قطعه کد از Jupyter Notebook

قابلیت های کدنویسی پایتون در اسکراپینگ وب

کتابخانه های شخص ثالث پایتون برای کارهایی مانند خراش دادن وب و واکشی داده ها از طریق HTTP ایده آل هستند.

شما می توانید درخواست های خودکار را برای انجام انواع مختلف وظایف به وب سایت ها ارسال کنید. اینها ممکن است شامل خواندن سرفصل های اخبار، دانلود تصاویر و ارسال خودکار ایمیل باشد.