راکت

راهنمایی برای نوشتن crawler

12 پاسخ

سلام دوستان خسته نباشید
ببخشید برای یه پروژه ساده نیاز به این سه مرحله هست که باید انجام بدم
1- نوشتن web crawler و خواندن کل دیتای یک url
2- نرمال کردن دیتا با استفاده از عبارات با قاعده
3- ذخیره دیتای نرمال شده در دیتابیس

کل روند به این صورته که مثلا محتوای html یک صفحه رو بگیرم
بعد تگ های p و a و هدینگ ها و.... رو بگیرم و ذخیره کنم تو دیتابیس
بعد که کاربر خواست یه کلمه رو سرچ کنه با توجه به این که کلمه توی هدینگ بوده یا تگ p و... رتبه بندی کنم و نتایج رو نشون بدم
یه حالتی شبیه یه موتور جستجوی ساده

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

@hesammousavi @ali.bayat @arian @mohsenbostan

ثبت پرسش جدید

پاسخ‌ها

12
الیاس سخاوتی نیا
الیاس سخاوتی نیا
@elyassir

تخصص: علاقه‌مند به برنامه‌‎نویسی

ببخشید
و یه سوال دیگه من فرضا آدرس example.com رو میدم
خب این اوکیه میشه دیتای html رو گرفت
ولی چطوری باید یه کاری کنم حالت خزنده داشته باشه یعنی باز بره توی لینک های داخلی سایت هم بگرده
ممنون میشم راهنمایی کنین

حسین شیری نژاد
حسین شیری نژاد
@hosseinshirinegad98

تخصص: programmer

سلام من این موردو زیاد کار کردم اگه نمونه کدهام باشه برات میفرستم.
باید از کتابخونه curl استفاده کنی استفاده از اون راحته
بعد که با این کتابخونه یک صفحه html رو خوندی با یک کتابخونه به نام Simple Html Domمی تونی محتوای موردنظرتو بیرون بیاری و در پایگاه داده ذخیره کنی.
curl جزو کتابخونه های تو کار php است و در فایل php.ini بر سمیکالونشو بردار فعال میشه.
اما کتابخونه Simple Html Domجزو کتابخونه های توکار php نیست و به همین منظور شما به ناچار باید در لاراول براش پکیج نصب کنی.
نصبش هم آسونه یه سرچی بزن Simple Html Domبا کامپوزر نصبش کن یه کلاس بهت میده راحت ازش میشه استفاده کرد. من قبلا باهاش کار کردم .
اینم نمونه کد و طریقه نصبش:
https://github.com/yangqi/Htmldom

شاید پاسخ شما همین‌جا باشد

حسین شیری نژاد
حسین شیری نژاد
@hosseinshirinegad98

تخصص: programmer

شما ابتدا با CURL محتوای یک صفحه رو بگیر بعد با HTML DOM محتوای مورد نظرو بیرون بیار.
CRUL آموزش فارسی خوبی داره.
اینم یه لینک نمونه کد
https://stackoverflow.com/questions/3592270/php-get-html-source-code-with-curl

آموزش فارسی :
https://netparadis.com/php-curl/

حسین شیری نژاد
حسین شیری نژاد
@hosseinshirinegad98

تخصص: programmer

برای اینکه خودکار عمل کنه باید براش CRON در لاراول بنویسی در هاستت فعالش کنی مثلا هر 24 ساعت فعال شه بره بخونه در دیتابس ذخیره کنه. آموزش کرون جاب در لاراول هم هست.
با دستور php artisan make:command یک کلاس میسازی بعد داخل متد handler کدهاتو مینویسی. در سایت پارس کلیک کرون جاب برای لاراولو خوب توضیح داده شده.

الیاس سخاوتی نیا
الیاس سخاوتی نیا
@elyassir

تخصص: علاقه‌مند به برنامه‌‎نویسی

@hosseinshirinegad98

خیلی ممنون
نه لاراول که استفاده نمیکنم
همون php خام
یه سوال دیگه
خب این curl مثلا ما آدرس roocket.ir رو میدیم و اوکیه
حالا برای اینکه بخوایم کاری کنم داخل لینک های داخلی سایت هم بره چیکار کنیم؟ مثلا داخل همه گفتگو ها هم بره و اطلاعات رو بگیره
تشکر

حسین شیری نژاد
حسین شیری نژاد
@hosseinshirinegad98

تخصص: programmer

بله با دادن این roocket.ir آدرس کل محتوای صفحه index سایت راکتو میخونه. و در قالب یک فایل یا رشته متنی بهت میده.
بعد با کتابخونه Simple Html Dome موارد موردنظرو استخراج می کنی. حالا اگر در همین صفحه ایندکس سایت راکت بازهم بخوای لینک های دیگه ای رو بخونی با Simple Html Dom ابتدا تمام تگ های a رو در قالب یک آرایه پیدا میکنی بعد با یک حلقه href تک تک a هارو به curl میدی و محتواشونو میگیری و پردازش مربوطه رو انجام میدی.
@elyasbeshkani

الیاس سخاوتی نیا
الیاس سخاوتی نیا
@elyassir

تخصص: علاقه‌مند به برنامه‌‎نویسی

@hosseinshirinegad98
خیلی ممنون
ولی من منظورم اینه آدرس roocket.ir رو بدم
و همه صفحات یا حداقل چند تاشونو اطلاعاتشو بگیره
مثلا roocket.ir/discuss/10299 اینو هم خودش بگیره، لازم نباشه من جدا جدا آدرس بدم
مثل خزنده که تو تمام صفحات میگرده

حسین شیری نژاد
حسین شیری نژاد
@hosseinshirinegad98

تخصص: programmer

فکر کنم پاسخ شما رو در بالا داده باشم براش یه قطعه کد می نویسی اون تمام آدرس های اون صفحه رو می خونه
@elyasbeshkani

امین محمدزاده
امین محمدزاده
@amin.webdesign

تخصص: برنامه نویسی وب - Laravel

سلام
ترجیحا با php کار نکن. چون سرعتش به شدت پایینه در زمینه crawl
طبق تجربه پایتون رو پیشنهاد میکنم. پکیج scrapy

مهدی
مهدی
@mehdi539

تخصص: توسعه دهنده

برای دانلود خودکار ویدئوهای رایگان سایت https://www.coursera.org بهترین روش در لاراول چی هست یا نود جی اس

الیاس سخاوتی نیا
الیاس سخاوتی نیا
@elyassir

تخصص: علاقه‌مند به برنامه‌‎نویسی

@mehdi539
متاسفانه اطلاعاتی ندارم ولی خب فکر کنم php توی این زمینه کند باشه

نیکی  نجفی
نیکی نجفی
@Nikinajafee

@hosseinshirinegad98
سلام وقت بخیر ؛
توضیحاتتون و پکیج هایی که معرفی کردید تو این زمینه خیلی خوب بود؛ پکیجی که مربوط به گیت هاب بود رو خوندم و از مثالی که زده بود متوجه شدم که ظاهرا نیازی به استفاده از curl موجود در php.ini نیست چون تو مثالی که زده شده بود این پکیج هم ادرس رو میگیره و هم محتوا مورد نظر رو میشه با استفاده از همین استخراج کرد؛
ادرس لینک گیت هاب : https://github.com/yangqi/Htmldom
گفتم از شما بپرسم که آیا درست متوجه شدم ؟

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

ورود یا ثبت‌نام