طراحی سایت, ساخت ربات تلگرام, آموزش 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() تعریف کردیم.

حتما بخوانید  تبدیل آرایه به XML در php

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

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

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

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

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

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

Scrapper.php

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

حتما بخوانید  ساخت سبد خرید چند مرحله ای با php و ajax

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

avatar
7 دیدگاه ها
7 پاسخ ها
0 دنبال کننده ها
 
دیدگاه با بیشترین پاسخ
پرطرفدارترین دیدگاه ها
3 تعداد نویسندگان دیدگاه
حسن شفیعیمسعودnetwonsabbas jafari نویسنده های اخیر دیدگاه
مسعود
مسعود

بلد بودم لزومی نداشت اینجا بپرسم
برای حرف زدن هم لازم به زیر لفظی نیست

مسعود
مسعود

متوجه نمیشم واضح بگید useragent چیه و برای حل این مشکل من چیکار کنم با مثال لطفا

مسعود
مسعود

من با این کد می خواهم اطلاعات این سایت رو بیرون بکشم اما در مرورگر چیزی به من نمایش نمیده این مشکل رو چطوری حل کنم
‍‍
$url="http://www.telewebion.com";
$ch=curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_ENCODING, 'UTF-8');
$result=curl_exec($ch);
curl_close($ch);
echo $result;

netwons
netwons

راهنمایی نمیکنی

netwons
netwons

سلام ببخشید یک سوال داشتم
یکسری از سایتها با وب اسکرپ نمیشه فراخوانی کرد مثل سایت mega.nz یا https://pexels.com میشه توضیح بدید چطوری این سایتها رو وب اسکرپ کنیم
راستی سایتmega.nz کد جاوا اسکریپت هست شاید با phantomjs باید وب اسکرپ کنیم اگه میشه در مورد این هم توضیح همراه با مثال بگید ممنون

مسعود
مسعود

خیلی گنگ شد من تازه دارم یاد میگیرم میشه برای شروع یک مثال ساده بدون دیتابس بزنید

abbas jafari
abbas jafari

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

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

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

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

سورس فروشگاهی دیجی کالا

بخش کاربران

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

مجوزهای ما

logo-samandehi

دانلود کتاب

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

تخفیف 150 هزار تومانی برای سورس فروشگاهی دیجی کالا تا پایان خردادماه - کد تخفیف : np150
ثانیه
دقیقه
ساعت
روز
خرید محصول