خزنده وب (Web Crawler)

سلام :)

مطلب امروز ضمن آشنا کردن شما با Web crawler و معماری آن، سورس خزنده وب ساده ای به زبان جاوا را ارائه می دهد.

خزنده وب که بیشتر ما آن را با عنوان Web crawler می شناسیم به برنامه کامپیوتری اطلاق می شود که World Wide Web (وب جهان گستر) را به صورت مرتب و سلسله مراتبی بازدید کرده و اطلاعات آن را مورد پردازش قرار می دهد. از Web crawler ها با عناوین دیگری مانند ants, automatic indexers, bots, Web spiders و Web robots نیز یاد می شود.

کاربرد ها

۱- موتورهای جستجو

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

۲- مدیریت فنی وب سایت

مدیریت فنی وب سایت بخشی از کار این خزنده هاست که شامل یافتن لینک های شکسته (Broken Link) ، اعتبار سنجی (Validation) کدهای HTML، فایل های CSS و … می باشد.

۳- جمع آوری اطلاعات خاص

کاربرد دیگر خزنده های  وب جمع آوری اطلاعات خاصی مانند آدرس های ایمیل است. معمولا هدف از اینکار ارسال هرزنامه (spam) می باشد. برای جلوگیری از ثبت آدرس ایمیل توسط این خزنده ها، می توانید آدرس ایمیل خود را به صورت saeidREMOVEME AT جیمیل و یا موارد مشابه دیگر بنویسید.

نحوه کار

به صورت عمومی نحوه کار Web crawler ها به این صورت است که ابتدا لیستی از URL ها (آدرس های وب) که به عنوان seed شناخته می شوند را برای بازدید پردازش می کنند. هنگام پردازش این آدرس ها، لیست لینک ها و آدرس های موجود در صفحات آن ها را گردآوری کرده و به لیست ابتدایی اضافه می کنند. بقیه اطلاعات را نیز با توجه به نیاز و هدف خود ذخیره  و پردازش می نمایند.

معماری خزنده وب

خزنده وب بخش اصلی و مرکزی هر موتور جستجویی را تشکیل می دهد. به همین جهت الگوریتم و معماری آن ها به شدت مخفی نگه داشته می شود. با این وجود معماری سطح بالای (High-level architecture) آن به شکل زیر می باشد:

معماری سطح بالای یک خزنده وب استاندارد (عکس از ویکی پدیا)

عادی کردن آدرس (URL normalization)

منظور از عادی کردن آدرس، یکی کردن آدرس هایی می باشد که دارای خروجی یکسانی هستند. هدف از این کار جلوگیری از جمع آوری اطلاعات یکسان از چندین URL می باشد. URL normalization با نام URL canonicalization نیز شناخته می شود که همان فرآیند تغییر آدرس برای استاندارد شدن می باشد.

مراحل فرایند عادی کردن آدرس

• تبدیل آدرس به حروف کوچک

HTTP://www.Example.com/ → http://www.example.com/

• افزودن / به آدرس در صورت نیاز

http://www.example.com → http://www.example.com/

• حذف آدرس ایندکس دایرکتوری

http://www.example.com/default.asp → http://www.example.com/
http://www.example.com/a/index.html → http://www.example.com/a/

• بزرگ کردن حروف encode شده یا همان حروف بعد از علامت ٪

http://www.example.com/a%c2%b1b → http://www.example.com/a%C2%B1b

• حذف بخش زاید

http://www.example.com/bar.html#section1 → http://www.example.com/bar.html

• حذف و تبدیل آی پی به دامنه

http://208.77.188.166/ → http://www.example.com/

• اعمال محدودیت بر روی پروتکل ها مانند تبدیل https به http

https://www.example.com/ → http://www.example.com/

• حذف پورت پیش فرض (پورت ۸۰ به صورت پیش فرض برای http می باشد)

http://www.example.com:80/bar.html → http://www.example.com/bar.html

• حذف / های تکراری

http://www.example.com:80/bar.html → http://www.example.com/bar.html

• حذف . ها (dot-segments)

http://www.example.com/../a/b/../c/./d.html → http://www.example.com/a/c/d.html

• حذف www از اول دامنه

http://www.example.com/ → http://example.com/

• مرتب کردن متغییرهای صفحه فعال

http://www.example.com/display?lang=en&article=fred
 → http://www.example.com/display?article=fred〈=en

• حذف متغییرهای اختیاری از query-string

http://www.example.com/display?id=123&fakefoo=fakebar
 → http://www.example.com/display?id=123

• حذف متغییرهای پیش فرض از query-string

http://www.example.com/display?id=&sort=ascending
 → http://www.example.com/display

• حذف علامت ? هنگامی که query-string خالی باشد

http://www.example.com/display? → http://www.example.com/display

• استانداردکردن encoding کاراکترها

http://www.example.com/display?category=foo/bar+baz
 → http://www.example.com/display?category=foo%2Fbar%20baz

شناسایی خزنده وب

خزنده های وب معمولا با استفاده از فیلد User-agent داده HTTP request خود را معرفی می کنند. شما با استفاده از لاگ وب سرور خود می توانید لیست این Web crawler های را مشاهده کنید. فیلد User agent ممکن است شامل URL ای باشد که به سایت سازنده خزنده اشاره می کند.

Spambot ها و سایر خزنده های مخرب معمولا فیلد User agent را به صورت غیر واقعی با اطلاعاتی مانند نام یک مرورگر پر می کنند.

فایل robots.txt

این فایل برای دادن اطلاعات اولیه در زمینه وب سایت مورد پردازش به خزنده های وب استفاده می گردد. به عنوان مثال با این فایل می توانید دسترسی خزنده های وب به بعضی زیر شاخه ها محدود کنید. دستورات زیر در فایل robots.txt از دسترسی خزنده ها به دایرکتوری /tmp/ جلوگیری می کند:

User-agent: *
Disallow: /tmp/

* فایل robots.txt یک استاندارد می باشد. به همین جهت خزنده وب (معمولا خزنده مخرب) می تواند آن را نادیده بگیرد.

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

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

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

سورس خزنده وب به زبان جاوا

سایت sun در سال ۱۹۹۸ مقاله ای آموزشی با عنوان “Writing a Web Crawler in the Java Programming Language” را ارائه داد. در آن مقاله ضمن توضیح دادن Web crawler سورس برنامه آن نیز در اختیار عموم قرار گرفت. البته این برنامه خیلی ساده و در مرحله ابتدایی می باشد. شما باید با توجه به نیازهای خود آن را تغییر داده و مورد استفاده قرار دهید.

• دانلود سورس خزنده وب به زبان جاوا (لینک کمکی)

کاربرد خزنده وب برای من

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

• داتک تله کام

• ارتباطات فرادانش سامان

منابع

موفق باشید ;)

  • Share/Bookmark

نصب Sun JDK 5 بر روی اوبونتو ۹.۱۰ و ۱۰.۰۴

سلام

بسته   Sun JDK نسخه ۱.۵ یا همان ۵ از مخازن اوبونتو ۹.۱۰ و ۱۰.۴ حذف شده و نسخه ۶ آن جایگزین شده است.

ساده ترین راه برای نصب نسخه Sun JDK 5 افزودن مخازن مربوط به آن در اوبونتو ۹.۰۴ به لیست مخازن ۹.۱۰ و ۱۰.۰۴ می باشد. برای این منظور مراحل زیر را دنبال کنید.

۱- فایل /etc/apt/sources.list را با یک ویرایش گر متن مانند gedit باز کنید:

sudo gedit /etc/apt/sources.list

۲- خطوط زیر را به آخر فایل اضافه کرده و بعد از ذخیره سازی آن را ببندید:

## for sun-java5-jdk
deb http://ir.archive.ubuntu.com/ubuntu jaunty-updates main multiverse

۳- لیست بسته ها را بروز کرده و sun-java5-jdk را نصب کنید:

sudo aptitude update
sudo aptitude install sun-java5-jdk

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

روش دیگر برای نصب jdk 5 دانلود کردن بسته ی نرم افزاری و وابسته های آن از سایت packages.ubuntu.com می باشد.

موفق باشید

  • Share/Bookmark

روش بدست آوردن آخرین آی دی ثبت شده در دیتابیس – MySQL

سلام
گاهی اوقات شما نیاز دارید تا آی دی آخرین رکورد ثبت شده در دیتابیس را بدست آورید.
برای این کار شما می توانید query زیر را جهت نمایش آخرین آی دی ثبت شده استفاده نمائید:(در MySQL)

SELECT LAST_INSERT_ID();

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

نکته :
در اکثر زبان های برنامه نویسی تابع یا متد آماده ای جهت اینکار وجود دارد. به عنوان مثال:

  • Share/Bookmark

تاریخچه زبان جاوا

زبان جاوا در سال ۱۹۹۱ ایجاد شد و در ابتدا Oak نام گرفت. پیدایش آن از پروژه ای به نام Green منشا گرفت که زیر نظرJames Gosling و با هدف اتوماسیون وسایل خانگی دنبال می شد. و Oak را در برنامه ریزی این دستگاه ها به عنوان زبانی قدرتمند به کار گرفتند. ولی تا سال ۱۹۹۴ این پروژه در ناامیدی دنبال می شد، تا اینکه این تیم توسعه پس از تغییر رویه اینترنت را در اهداف کار خود گنجاند.

Oak به Java تغییر نام داده شد تا بتواند به عنوان نشان تجاری ثبت شود. Netscape Navigator ۲.۰ در سپتامبر سال ۱۹۹۵ از این زبان، که به صورت Applet بکار می رفت، پشتیبانی کرد و Microsoft در اواخر سال ۱۹۹۵ آن را بکار گرفت.

از آن زمان به بعد توانایی های این زبان رو به فزونی گذاشت. در سال ۱۹۹۶ شرکت Sun Microsystems نگارش ۱.۰ از Java Development Kit را توسعه داد. و سال بعد نگارش ۱.۱ از JavaBeans پشتیبانی کرد. در سال ۱۹۹۷ شرکت Sun بر علیه Microsoft شکایت کرد و این شرکت را متهم به نقض توافقنامه مربوط به استفاده از Java در Internet Explorer کرد. بعد از این سان JDK ۱.۲ و Swing را، که ابزار پیشرفته تری نسبت به (AWT (Abstract Windowing Toolkit برای ایجاد رابط گرافیکی کاربر(GUI) فراهم می کرد، ارایه کرد. در حال حاضر JDK در نگارش ۵.۰ وبا ویژگی های جدیدی در دسترس است. و با نام J۲SE) Java ۲ Standard Edition) نیز شناخته می شود. در کنار آن J۲EE Java ۲ Enterprise Edition (که درحال حاضر در نگارش ۱.۴ است) برای کاربردهای تجاری ارایه شد. J۲EE تکنولوژی هایی از قبیل Enterprise JavaBeans EJB), Servlets, JavaServer Pages) و … را در بر می گیرد.
(more…)

  • Share/Bookmark