بخشی از مقاله
*** این فایل شامل تعدادی فرمول می باشد و در سایت قابل نمایش نیست ***
طراحی و پیاده سازی یک خزنده وب توزیع شده
خلاصه
امروزه موتورهای جستجوی مختلفی برای دستیابی به اطلاعات مورد نیاز از میان انبوه مطالب موجود در وب استفاده می شوند، که برای جمع آوری داده ها به خزنده های وب وابسته هستند. خزنده وب یکی از مهم ترین مولفه های موتور جستجو می باشد که وظیفه آن دریافت صفحات وب جهت شاخص گذاری توسط موتور جستجو است. علاوه بر موتور های جستجو از خزنده های وب برای اهدافی مانند داده کاوی استفاده می شود. در این مقاله سعی شده است تا ساختار و نیازمندی های مختلف یک خزنده وب را از دیدگاه طراحی مورد بررسی قرار داده و به شرح پیاده سازی بخش های مختلف آن در چارچوب برنامه نویسی تحت شبکه بپردازیم.
کلمات کلیدی: موتور جستجو ، خزنده وب ، خزش
.1 مقدمه
در آغاز پیدایش اینترنت ، وب تنها شبکه ای کوچک با مجموعه ای از وب سایت های تشکیل شده از صفحات وب ایستا بود که تنها تعداد محدودی از افراد و سازمان ها از آن استفاده می نمودند. با افزایش روز افزون اطلاعات موجود در وب و فراگیر شدن استفاده از آن توسط کاربران مختلف نیاز به وجود یک ابزار برای یافتن اطلاعات مورد نیاز احساس می شود.
موتورجستجو به عنوان ابزار جستجوی وب با تکیه بر خزنده وب مجموعه بزرگی از صفحات را به جهت تحلیل و پردازش ذخیره سازی میکنند و می توان گفت مرحله اولیه در طراحی یک موتور جستجو ایجاد یک خزنده وب قدرتمند برای آن می باشد.
در نگاه اول ساختار یک خزنده وب ساده جلوه میکند درحالی که با توجه به رشد سریع وب و نرخ تغییر سریع اطلاعات موجود در آن طراحی یک خزنده وب با کارایی بالا در این مقیاس از پیچیدگی های زیادی برخوردار است بنابر این برای سادگی در طراحی سعی شده تا سیستم خزش را به صورت بخش هایی مستقل طراحی و پیاده سازی نمود.
خزنده وب برنامه ای است که با دریافت یک یا بیش از یک URL به عنوان ورودی اولیه ، صفحات مربوط به این URL ها را دانلود نموده و اقدام به استخراج تمامی لینک های موجود در آنها میکند و به صورت بازگشتی صفحات مربوط به لینک های استخراج شده را نیز دریافت خواهد نمود.
از خزنده وب به عنوان بخش اصلی موتور های جستجو یاد می شود زیرا بدنه اصلی صفحات وب را برای پردازش و شاخص بندی توسط موتور جستجو جمع آوری می نماید. علاوه بر موتورهای جستجو از خزنده وب در موضوعات مختلفی از قبیل داده کاوی ، موتور خرید مقایسه ای و غیره استفاده می شود .[1]
.1.1 موتور جستجو
طراحی رایج موتور های جستجو به صورت انتشاری صورت میگیرد که در آن موتور جستجو مجموعه ای از داده ها را برای شاخص گذاری و جستجو کردن ایجاد میکند. بیشتر موتور های جستجو از خزنده وب به عنوان مرحله جستجو در وب یاد می کنند که از الگوریتم های رتبه بندی بهره می جوید. در مدل انتشاری سه مرحله ی خزش ، شاخص گذاری و جستجو به ترتیب دقیق اجرا می شوند ، ساختار کلی موتور جستجو را در شکل 1 مشاهده می شود .[2]
.2.1 کاربرد های خزش
خزنده های وب در سناریو های مختلفی برای جمع آوری داده ها استفاده می شوند ، برای ایجاد موتورهای جستجوی گسترده و مخازن داده عظیم خزنده های وب با مجموعه کوچکی از صفحات کار خود را شروع نموده و با پردازش لینک های موجود در آن با استفاده از روشی مشابه پیمایش اول سطح به همراه تکنیک هایی جهت اولویت دادن به صفحات مهم برای پردازش اقدام به دریافت و پردازش سایر صفحات می نمایند .[3]
.1.2.1 خزش صفحات وب و بروزرسانی صفحات موجود
موتور های جستجو از خزنده های وب برای ذخیره یک رونوشت از صفحات وب به صورت محلی برای پردازش های آتی استفاده می کنند و همچنین وظیفه دیگر خزنده های وب بررسی تغییرات و بروزرسانی نسخه های ذخیره شده پیشین می باشد تا از برابر بودن مطالب ذخیره شده با نسخه اصلی آنها اطمینان حاصل شود.
برای کاهش استفاده از پهنای باند شبکه لازم است تا از یک استراتژی مناسب برای خزش مجدد صفحات وب استفاده نمود بنابر این می توان با استفاده از توزیع های پواسون و پارتو به صورت آماری اقدام به مدل سازی نرخ بروزرسانی صفحات پرداخت و بدین صورت صفحاتی که تغییرات بیشتری دارند را در اولویت بالاتری برای خزش مجدد قرار داد .[4]
.2.2.1 خزش وب پنهان
بسیاری از داده های موجود در وب در پایگاه داده های وبسایت های مختلف ذخیره شده اند که تنها از طریق برخی پرس و جو ها و یا تکمیل و ثبت برخی فرم ها قابل دستیابی خواهند بود. اخیرا دستیابی خودکار به این داده ها که از آن تحت عنوان وب پنهان یاد می شود توجه زیادی را به خود جلب کرده است .[3]
خزنده های سنتی قادر به ذخیره بخش از اطلاعات موجود در وب هستند که به آن وب قابل شاخص گذاری به صورت عمومی (PIW) گفته می شود. بسیاری از پایگاه داده های موجود در شرکت ها از طریق وب در دسترس است. بنا به آنچه که اخیرا تاخمین زده شده است حجم وب پنهان حدود 500 برابر حجم داده های موجود در PIW می باشد .[5]
.3.2.1 خزش متمرکز
موتور های جستجوی تخصصی می توانند از سیاست های خزش برای بدست آوردن اطلاعات با موضوع ، زبان و یا نوع فایل مشخصی استفاده نمایند .[3]
.3.1 پیشنهادات و کارهای آتی
بنا به آنچه در این قسمت بیان شد ، موضوعاتی از قبیل الگوریتم های شاخص گذاری و اولویت خزش صفحات، تکنیک های پردازش فرم های وب سایت و روش های تحلیل لینک ها و مطالب در خزنده های متمرکز می تواند برای پژوهش های آتی انتخاب شود.
.2 ساختار پایه خزنده وب
با توجه به کاربرد های مختلف ذکر شده برای خزنده های وب ، سناریو های متفاوتی وجود خواهد داشت که البته برخی از وظایف مشخص به صورت مشترک بین تمام این سناریو ها باید پیاده سازی شوند. برای سادگی بیشتر می توان سیستم خزنده وب را به دو قسمت سیستم خزش و برنامه خزش تقسیم نمود.
برنامه خزش مشخص می سازد که چه صفحه هایی باید برای دریافت درخواست شوند و سیستم خزش به تدریج صفحات درخواست شده را دریافت نموده و برای پردازش در اختیار برنامه خزش میگذارد.
سیستم خزش مسئول پیاده سازی و اجرای استاندارد های مختلف مانند بررسی حقوق دسترسی روبات ها ، کنترل سرعت و غیره می باشد ، درحالی که برنامه خزش استراتژی خزش را مشخص می سازد مانند خزش اول سطح یا متمرکز.
بنابراین ، برای طراحی یک خزنده وب متمرکز بجای یک خزنده وب اول سطح میتوان از سیستم خزش یکسانی استفاده نمود ولی باید از برنامه خزش کاملا متفاوتی که دارای اجزایی مانند کتابخانه هایی برای تحلیل صفحات وب و ساختار داده های متفاوتی برای URL های دیده شده باشد استفاده شود. این ساختار دو جزئی برای خزنده در شکل 2 نشان داده شده است .[3]
.1.2 نیازمندی های یک خزنده وب
برای اینکه بتوان یک خزنده قابل استفاده در مقیاس وب ایجاد نمود می بایست نکات و استاندارد های خاصی را مد نظر قرار داد که در ادامه به شرح برخی از این نیازمندی ها خواهیم پرداخت.
.1.1.2 انعطاف پذیری و مقاومت در برابر خطا
با توجه به سناریو های مختلف ، خزنده وب میبایست با تعداد زیادی از سرویس دهنده های وب که دارای سیستم عامل و پیکربندی های متفاوتی هستند در ارتباط باشد لذا خزنده وب باید دارای انعطاف پذیری مناسبی بوده تا با ایجاد تغییرات اندک بتوان از آن در یک سناریو خاص استفاده نمود همچنین میبایست در مقابل خطاهای مختلفی مانند پاسخ دهی نادرست سرویس دهنده ، خطا های موجود در ارتباطات وب ، ساختار نامناسب صفحه وب دریافتی و غیره مقاوم بوده و بروز خطا مانع ادامه فعالیت های سیستم نشود .[3]
.2.1.2 توزیع کامل
برای دستیابی به کارایی بالا در برنامه نویسی ، استقرار و خطایابی ، خزنده وب توزیع شده و موازی باید به صورت عامل های مجزا و با یک شناسه های منحصر به فرد مشخص شود که این کار این نتیجه بنیادی را دربر خواهد داشت که : هر وظیفه باید به صورت توزیع شده اجرا شود و بدین معنی است که هیچ قسمت هماهنگ ساز مرکزی نباید وجود داشته باشد.
توزیع کامل ابزاری برای دستیابی به یک سیستم قابل گسترش در مقیاس بزرگ است. در اینجا موقعیت جغرافیایی عامل ها مورد توجه نیست و این مسئله می تواند موجب بروز تاخیر شود و برای جلوگیری از آن می بایست ارتباطات را به حداقل رساند .[6]
.3.1.2 رسوم و کنترل سرعت
در طراحی یک خزنده وب یک استاندارد که به اصطلاحا به آن مودب بودن گفته میشود بیان می دارد که یک خزنده وب نباید به درخواست های همزمان را به طور پیاپی به یک سرویس دهنده ارسال کند زیرا این امر باعث ایجاد اختلال در فعالیت های سرویس دهنده شده و ممکن است باعث شود تا به دلیل بالا رفتن ترافیک و تعداد درخواست ها نتواند به کاربران واقعی خود سرویس های مناسب را ارائه نماید.
مسئله دیگری که باید توسط خزنده وب رعایت شود توجه به فایل robots.txt درون شاخه اصلی سایت بوده که توسط آن اجازه دسترسی و یا عدم دسترسی به برخی از مسیر های مهم سایت روی سرویس دهنده مشخص شده است. عدم توجه به این استاندارد می تواند دسترسی به داده های حساس را منجر شود. البته مدیران وبسایت ها باید توجه داشته باشند که صرف استفاده از فایل robots.txt برای حفظ امنیت داده ها کافی نبوده و باید سیاست های امنیتی خاصی را روی سرویس دهنده اجرا نمایند .[3]
.4.1.2 پوشش دهی و سادگی
در طراحی این دو اصل از اهمیت ویژه ای برخوردار هستند. پوشش دهی تعداد نسبی صفحات کشف شده توسط خزنده وب را نشان می دهد. به صورت ایده آل در صورتی که یک خزنده زمان کافی داشته باشد می تواند تمامی صفحات را کشف کرده و درخت کامل داده ها را ایجاد نماید .[7]
به عبارت دیگر ، پوشش دهی بیان میکند که تعداد صفحه هایی که سیستم می خزد چقدر نسبت به هدف واقعی خزنده مرتبط است و آن را با C نمایش داده که از رابطه زیر محاسبه می شود : [8]
که در آن c تعداد صفحه های خزیده شده واقعی و u کل تعداد صفحه هایی که خزنده باید آنها را ملاقات کند است. یک استراتژی خوب تخصیص باید به پوشش دهی 1 دست یابد یعنی هر صفحه ای که اختصاص داده شده را دریافت کند.
.5.1.2 تخصیص متوازن با قابلیت محاسبه محلی
توزیع URL ها بین عامل ها مسئله ای مهم است که بطور ویژه بر کارایی سیستم خزنده وب توزیع شده اثر می گذارد. سه هدف اصلی برای تخصیص متوازن ذکر شده است که در ادامه به بررسی آنها خواهیم پرداخت : [2]
-1 در هر زمان یک URL می بایست به یک عامل خاص تخصیص داده شود که تنها آن عامل وظیفه دریافت آن را داشته باشد تا از تکرار داده ناخواسته جلوگیری شود.
-2 برای هر URL اطلاعات عامل مسئول دریافت آن میبایست به صورت محلی در دسترس باشد بدین معنی که هر عامل می بایست بتواند بدون نیاز به ارتباطات شبکه شناسه عامل مربوط به دریافت یک URL مشخص را محاسبه نماید، در این صورت از حجم ارتباطات درون شبکه ای کاسته می شود. اگر یک عامل هنگام ارسال یک URL به یک عامل دیگر با خطا مواجه شود می تواند آن را بدون نیاز به ارتباط بیشتر به یک عامل دیگر اختصاص دهد.
-3 تخصیص URL ها میبایست به صورت متوازن انجام شود در این صورت هر عامل می بایست مسئول دریافت یک زیرمجموعه تقریبا هم اندازه از URL ها باشد. تعداد URLها میبایست متناسب با منابع مورد استفاده عامل از قبیل حافظه ، دیسک و پهنای باند شبکه باشد.
.2.2 تکنیک های تخصیص URL
با توجه به حجم داده های موجود در وب و تعداد بسیار زیاد وب سایت ها نیازمند خواهیم بود تا خزنده های وب را به صورت همزمان و توزیع شده اجرا نماییم لذا مسئله نحوه تخصیص URL ها به هر خزنده جهت دریافت و پردازش از اهمیت خاصی برخوردار است. در ادامه پس از معرفی خواص و معیار های مقایسه تکنیک های تخصیص مختلف به بررسی برخی از تکنیک های تخصیص خواهیم پرداخت.