PDA

View Full Version : سوال: ساخت Crawler



nunegandom
شنبه 18 مهر 1394, 22:12 عصر
سلام
چطوری یه چیزی تو مایه های خزنده درست کنم که فقط سایت هایی که بهش میدم رو بگرده و دیتا های هر صفحه رو در بیاره

aliagamon
یک شنبه 19 مهر 1394, 00:24 صبح
الگوریتم ساده ای داره :

ادرس را بگیر
استخراجش کن
تمامی لینک هایی موجود در ان که دارای ادرس سایت هست را به لیست اضافه کن(بدون تکرار)
لینک اول لیست بالا که استخراج نشده است را به مرحله ی یک بفرست

با multi threading میتونید سرعت رو تا حد خیلی خوبی افزایش بدید (رابطه مستقیم با سرعت نت و احتمالا رم داره)

nunegandom
یک شنبه 19 مهر 1394, 11:20 صبح
ممنونم
با html agility pack پیشنهاد میدین؟ RegularExpression؟ یا چیز دیگه ای هم هست؟
قراره اطلاعات استخراج شده کل صفحه نباشه فقط یه سری چیزای خاص مثل تیتر و امتیاز و غیره باشه اونا رو توش موندم

aliagamon
یک شنبه 19 مهر 1394, 17:02 عصر
خب regex خیلی سریع تر و بهینه تر کارمیکنه اما از طرفی هم html agility pack قابلیت های بهتری داره اگه میتونید پترن مناسبی با Regex ایجاد کنید بهترین انتخاب برای کار شما هست چون تعداد صفحات زیاد و سرعت مهمه

nunegandom
یک شنبه 19 مهر 1394, 17:42 عصر
ممنون حق با شماست
اما به نظرتون برای دیتابیس رو چطوری طراحی کنم برای aliexpress؟

aliagamon
دوشنبه 20 مهر 1394, 00:41 صبح
کار سختی نیست خود فروشگاه برای شما ادرس رو داره شما فقط محتویات div با کلاس ui-breadcrumb رو بگیرید ادرس به صورت دسته بندی شده اونجا هست مثلا اینطوری :
Home >all cat >type one >sub type one
شما توی دیتابیستون پیشفرض یه دیتابیس دارید که home شما هست و یه تیبل all catagoriesحالا میرید بعدی که type one هست چک میکنید میبینید هیچ تیبل فرزند یا مرتبط با all catagories با نام type one هست یا نه اگه بود که هیچی اگه نبود تولید کنید حالا میرین قسمت بعدی که sub type one هست این چک میکنین ببرینین مرتبط با type one وجود دارد یا نه اگر نبود بسازید در غیر اینصورت میرید قسمت بعدی که وجود نداره پس اون محصول رو داخل table sub type one که مرتبط با type one هست و اون هم مرتبط با all catagories هست ذخیره میکنید.
من خیلی مهارتی توی Sql ندارم ولی فکر کنم برای این کار با foreign keys میتونید راحت ارتباط بین table هارو برقرار کنید.