طراحی سایت, ساخت ربات تلگرام, آموزش php , سورس کد php ,سورس ربات تلگرام , سورس فروشگاه اینترنتی , آموزش طراحی وب

وب اسکرپینگ در PHP


وب اسکرپینگ در PHP

تقریبا هر توسعه دهنده PHP تا حالا یک سری داده ها را از وب اسکرپ کرده است. Web Scraping، روشی برای استخراج و پاکسازی داده ها در سرتاسر اینترنت است.

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

وب اسکرپینگ (استخراج داده از صفحات وب) قبل از بوجود آمدن API ها استفاده می شد که الان اهمیت آن دوچندان شده است چراکه سایت های زیادی APIی برای دسترسی به یک سری داده ها را ارایه نمی دهند و ما ناچاریم که با وب اسکرپینگ (Web Scraping) تمام اطلاعات صفحه را بصورت HTML دریافت و با تجزیه (parse) کردن آن به داده مورد نظر برسیم.

مثلا برای دریافت اطلاعات موزیک از یک وبسایت مرجع دانلود آهنگ, دریافت اطلاعات فیلم و سریال از وب سایت مرجعی مثل imdb , دریافت قیمت های ارز, دریافت اخبار روزانه و خیلی مثال های دیگر که امروزه بی نهایت استفاده میشه می توانید از این آمورش وب اسکرپینگ در PHP بهره ببرید.

از وب اسکرپینگ (web scraping) در ویکی پدیا اطلاعات کامل و جامعی وجود دارد و همچنین روش های زیادی مثل pattern matching که با regex انجام می شود و یا DOM parsing که اینجا استفاده می کنیم, را به همراه ابزارهای آماده را معرفی کرده است.

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

آنچه در آموزش وب اسکرپینگ در PHP یاد می گیرید

  • استخراج داده از وب سایت های مختلف
  • ذخیره این اطلاعات در دیتابیس mysql
  • کلاس php برای استخراج داده از Domdocument
  • خودکار کردن عملیات وب اسکرپینگ در PHP

ساخت دیتابیس

 

فایل Db.php

برای اتصال به دیتابیس و ذخیره اطلاعات استخراج شده با وب اسکرپینگ در PHP یک کلاس Db برای این منظور ایجاد کردیم که از PDO برای اتصال به دیتابیس mysql استفاده می کند.

ساخت کلاس WebScraping

WebScarping.class.php

در اینجا دو متد به نام های getCurl() و getXPathObj() تعریف کردیم.

حتما بخوانید  استفاده از reCAPTCHA گوگل در php

تابع getCurl() برای ارسال درخواست GET با استفاده از curl و برگشت دادن کد HTML داکیومنت موردنظر استفاده خواهد شد.

در تابع getXPathObj() نیز یک شی از DomDocument را ایجاد کردیم که مقدار $item را به عنوان یک داکیومنت HTML توسط تابع loadHTML() برگشت می دهد.

$xmlPageDom نیز به شی DOMXPATH پاس داده شده است که ما کمک می کند تمام داده های انتخابی از صفحه HTML را دریافت کنیم.

اگر درحال اسکرپ کردن صفحه XML را دارید, به جای تابع loadHTML از تابع loadXML استفاده کنید.

دریافت داده ها از داکیومنت HTML و ذخیره در دیتابیس

ما اطلاعاتی مثل نویسنده مطلب, عنوان, زمان انتشار, متاتگ ها و آخرین مطالب را از این آدرس دریافت می کنیم.

Scrapper.php

توضیحات هر خط به طور واضح و کوتاه با یک کامنت در کدها آمده است تا درک کنید که هر کدام به چه منظور استفاده شده است.

حتما بخوانید  آموزش ajax در php

در اینجا ما ابتدا یک شی از دیتابیس و کلاس WebScraping خودمان ایجاد کردیم. بعد از آن کدهای صفحه URL هدف را بررسی کردیم تا بتوانیم سلکتور مناسب برای دریافت داده های هر بخش مثل نام نویسنده, زمان انتشار را بنوسیم. سپس داده ها را با query دریافت و داده ها را دسته بندی کردیم.

در نهایت کوئری SQL را برای قرار دادن (INSERT) داده ها در دیتابیس mysql استفاده کردیم.. که خب مطمینا قبلا از آن برای پاکسازی ورودی های مخرب از تابع htmlspecialchars بهره بردیم.

با اجرا موفق کوئری SQL پیامی را چاپ می کنیم, در غیر اینصورت هم خطای مربوطه را نمایش می دیم.

اجری خودکار اسکریپت (برای لینوکس)

می توانید بصورت روزانه, حجم زیادی از اطلاعات را جمع آوری و در دیتابیس برای نمایش در سایت (مثلا بخش اخبار یا قیمت ارز) استفاده کنید.

بنابراین اگر وبسایتی برای استفاده از این اطلاعات را دارید, نیاز است که از cron job برای اجرای خودکار اسکریپت طبق محدوده زمانی که وجود دارد استفاده کنید.

در آموزش cron job نحوه کار با آن را به طور کامل دیدیم.

کافی است در ترمینال دستور crontab –e را بزنید.اگر از شما درخواست ادیتور را کرد گزینه ۲ را بزنید و سپس خط زیر را اضافه کنید

این خط اسکریپت شما را هر روز در ساعت ۶ بعد از ظهر اجرا و خروجی لاگ ها را در log.txt ذخیره می کند.

برای دریافت اطلاعات بیشتر در مورد توابع پایه و مهمی که در آموزش وب اسکرپینگ در PHP استفاده کردیم به لینک های زیر مراجعه کنید

در مقالات بعدی سعی می شود یک مثال بسیار جامع از آموزش استخراج اطلاعات فیلم از imdb را در اختیار شما قرار بدیم.

امیدوارم از آموزش وب اسکرپینگ در PHP نهایت استفاده را برده باشید.

برای دانلود سورس کد کامل این آموزش از باکس دانلود استفاده کنید.

هر سوالی داشتید ، از قسمت نظرات ارسال کنید . سریعا ، پاسخگوی سوالات شما هستیم .

موفق و پیروز باشید

حسن شفیعی
مدرس ، پنتستر ، توسعه دهنده اپلیکیشن های تحت وب ، عضو مرکز حامی نخبگان و از مدیران و اعضای رسمی تیم امنیتی آشیانه هستم . علاقه خاصی به زبان php و امنیت شبکه و لینوکس دارم و هر روز تلاش می کنم به این حوزه ها مسلط تر شوم و اطلاعاتم را در وب به اشتراک بگذارم

دیدگاه کاربران

2 پاسخ به “وب اسکرپینگ در PHP”

  1. abbas jafari گفت:

    سلام وقت بخیر . ممنون میشم اسکرپت از سرویس های مثل fcm گوگل رو هم بزارین . بنده خیلی تلاش کردم اما موفق نشدم اطلاعات کنسولم رو با اسکرپتینگ بگیرم .

    0
    • حسن شفیعی گفت:

      سلام ممنون. با این سرویس کار نکردم. به هر حال فک کنم نیاز به یک سری احراز هویت ها مطمینا داره و برای جواب دادن کار حتما و حتما نیاز است با استفاده cURL , تعدادی از هدرهای معتبر رو برای بایپس کردن و نمایش دادن اسکریپت به عنوان یک کاربر عادی را ست کنید.

      موفق باشید.

      0

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

جدیدترین آموزش های آنلاین



دانلود رایگان (هدیه ویژه)

کتاب آموزش زبان برنامه نویسی PHP را دانلود و همین امروز یادگیری را شروع کن و به جمع برنامه نویسان ملحق شو ;)

دانلود رایگان کتاب

افزایش امنیت سایت

مجوزهای ما


logo-samandehi نماد اعتماد الکترونیک

بخش کاربران

هنوز عضو نیستید ؟ کلیک کنید

دانلود کتاب

عضویت در خبرنامه