واضح آرشیو وب فارسی:سایت ریسک: bahareh65509-09-2008, 03:29 PMسلام به همه دوستان من قراره یه پروژه به زبان C#.netبنویسم که موضوعش طراحی یک موتور جستجوست اگه کسی می تونه کمکم کنه،یک دنیا ممنون:11: _H2_11-09-2008, 01:52 AMسلام اگر منظورتان موتورهای جستجو وب است، اصولش ساده است و پیاده سازیش هم ساده است ولی حجم کد نویسی زیادی دارد. اولین چیز نیاز به یک روبات اسکن کننده است. شما باید صفحات اینترنت را به صورت متنی دانلود کنید (مثلاً با کلاسس System.Net.WebClient) و سپس: 1) این متن html را پردازش کنید و به طرز مناسبی که بعداً جستجوی سریعی داشته باشد، همراه با لینکش در دیتابیس ذخیره کنید 2) این متن html را پردازش کنید و هایپرلینک ها به صفحات دیگر را پیدا کنید، این هایپرلینک ها هدف بعدی جستجو هستند. یعنی شما با رفتن به هر صفحه html آدرس چن و شاید چند ده صفحه دیگر را پیدا کنید. باید مراقب باشید صفحه ای دوبار اسکن نشود و یک حلقه بینهایت در برنامه پیش آید، باید به فکر آپدیت کردن اطلاعات صفحات هم باشید و طبق یک برنامه زمان بندی اطلاعات صفحات را مجدداً در دیتابیس تان refresh کنید در سمت دیگر هم باید یک ایندکس قوی و کد مناسب برای جستجوی کلمات مورد نظر کاربر از داخل دیتابیس و یافتن لینک صفحات داشته باشید. r.gh4518-09-2008, 06:03 PMسلم می بخشید میشه یکمی بیشتر در مورد نحوه اسکن کردن صفحات توضیح بدید اگه میشه یک کد نمونه هم بزارین. یک سوال دیگه آیا میشه یک برنامه توی وب نوشت که مثلا توی صفحات خاصی یک کاری بکنه . مثلا ارسال پیام. _H2_19-09-2008, 01:52 AMسلام انجام این عمل بسیار حساس است و کد زیاد و دقیقی میخواهد که خیلی شبیه Parser های XML است ولی متاسفانه Html کمی بی قانون است و زیاد قوانین XML را رعایت نمیکند، مثلاً تگ <br> به جای </br> یا ساختار خیلی از صفحات وب مشکل دارد و شاید تگ td باز باشد که <td/> نداشته باشد و یا .... در نتیجه باید یک کد دستی داشته باشیم که کاراکتر به کاراکتر html را بخواند و تفسیر کند و حتی الممکن تمام کار را در یک بار خواندن و مرور متن انجام دهد. البته میتوان با کمی دردسر از هسته DOM مرورگر هایی مثل IE هم استفاده کرد ولی در دنیای واقعی و برای مصرف یک سایت جستجو فکر نکنم سرعت مناسبی داشته باشد و ساخت همان یک کد خوانده یک مروره خیلی بهتر است. من فقط یک کد بسیار بسیار بسیار ساده و البته نه چندان صحیح برایتان نوشتم. این کد فقط تگهای a را اسکن میکند و لینک تمام صفحاتدیگر را پیدا میکند. این کد خلی مشکل دارد ولی در عوض ساده و کوتاه و قابل فهم است. (مثلاً اگر در خصیصه href و قبل یا بعد از = یک یا چند فاصله باشد داشته باشد، کد به مشکل میخورد و ...) باید توجه داشتکه از Scan محتویات غیر متنی zip و pdf و jpg و... و... و... در کدها جلوگیری کرد. شما میتوانید به جای Urls.Add این مقادیر را به یک ListBox و یا با یک Enter به یک TextBox اضافه کنید. (در حالت واقعی این کار روی دیتابیس انجام میشود.) !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! در آخر توجه داشته باشید که با احتصاب جلوگیری از مرور مجدد یک صفحه، میتوان متد Scan را برای صفحات جدید یافته شده نیز اجرا کرد. این کار به صورت یک سرطان شاخه درختی رشد خواهد کرد و ظرف مدت کوتاهی به سایتهای دیگر و میلیون و میلون ها و میلیارد ها لینک خواهد رسید و تقریباً تمام شدنی برای من مفروض نیست. !!! قسمت دوم سوالتان را اصلاً متوجه نشدم، مثلاً شما صفحه site.com/file.htm را پیدا کردید، خوب چه پیامی میخواهید بفرستید؟ r.gh4521-09-2008, 09:31 AMسلام منونم از اینکه جواب دادید. برای قسمت دوم سوال منظورم اینکه مثلا ربات ما به صورت خدکار در یک سایت ثبت نام کنه (البنه میدونم این ربات باید خیلی هشمند باشه تا بتونه به تور مثال textbox مربوط به نامو پیدا کنه ولی برای شروع ما فرض می کنیم این فرم در تمام ثایت ها یکسان تعریف شده مثلا textbox1 مربوط به نام است.) ممنون _H2_21-09-2008, 07:56 PMسلام برای قسمت دوم سوال منظورم اینکه مثلا ربات ما به صورت خدکار در یک سایت ثبت نام کنه (البنه میدونم این ربات باید خیلی هشمند باشه تا بتونه به تور مثال textbox مربوط به نامو پیدا کنه ولی برای شروع ما فرض می کنیم این فرم در تمام ثایت ها یکسان تعریف شده مثلا textbox1 مربوط به نام است.) در دید اول شاید ساده باشد ولی خیلی حالت خاص دارد و حتی در شرایط فیلدهای مساوی هم شاید مجبور شویم برای هر آدرسی کد را عوض کنیم، برای ثبت نام چندان کار امد نیست، مگر اینکه بخواهید یک برنامه مخرب اجرا کنید و تعداد کثیری را ثبت نام کند!!!! یا اینکه برای صفحات دانلود برخی سایت، کاری کنید که زمان انتظار از بین برود و... صفحه اگر کد js داشته باشد، باز کار سخت میشود، یعنی دکمه اصلی به جای submit یک کد js را اجرا کند، بعد باید بشنیم ببینیم کد js چه کار دارد میکند.... اگر page مورد نظر اعتبار سنجی تصویری داشته باشد (تصویر یک نوشته) دیگر کار غیر ممکن میکند، چون این نوشته های تصویر شده اغلب طوری هستند که بهترین OCR ها هم نمیتوانند از پس شان بر آیند... در کل خیلی به محتویات صفحه وابسته است. r.gh4522-09-2008, 03:44 PMبازهم منونم آقای h2 . من قصد نوشتن کد مخرب ندارم این یک برنامست که به من سفارش دادن و بیشتر جنبه تبلیغاتی داره . فقط اگه شما لطف کنید و یک کد نمونه دیگه در این باره برای من بزارین ممنون میشم. _H2_23-09-2008, 11:00 PMسلام اگر فرض کنیم یک فرم ساده با یک TextBox و Button به فرمت زیر داشته باشید: !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! یا html زیر باشد، با هر زبان سمت سرور... !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! آنگاه برای پر کردن TextBox1 با مقدار Value1 و کلیک کردن Button1 و گرفتن html نتیجه، میتوان کد زیر را اجرا کرد. !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! همانطور که گفتم اجرا شدن صحیح دستورات بسیار بسیار به صفحه حساس است. مثلاً در صفحات aspx - برای اتفاق افتادن رویدا کلیک معمولاً باید EVENTTARGET__ را هم اضافه کرد تا سوییچر داخلی فعال شود. - شاید نیاز باشد گزینه EnableEventValidation برای page مربوطه False شود، چون asp.net مثل بقیه زبانهای سمت سرور چندان بی در و پیکر نیست و مدیریت شدیدی روی درخواستها دارد، معمولاً به صورت داخلی رویدادها را اعتبار سنجی میکند. ولی در مورد صفحات دیگر زبانهای سروری این دو نکته وجود ندارد. در کل اگر میخواهید، میتوانید کد فوق را به عنوان یک یادگیری و سرنخ در نظر بگیرید و سپس و بیشک باید آنرا بسیار توسعه بدهید. r.gh4525-09-2008, 10:35 AMسلام خیلی لطف کردین جناب h2 از اینکه وقت گزاشتین ممنون.اومید وارم با امامتون حضرت علی محشور بشید _H2_25-09-2008, 09:14 PMسلام ...اومید وارم با امامتون حضرت علی محشور بشید یک چیزی میگفتید که حداقل یک تلیارد ام احتمال داشته باشه .... ! r.gh4526-09-2008, 11:12 AMما در این دنیا با هر کسی دوستی کنیم اون دنیا هم حتما با همان شخص دوستی می کنیم اگه با شیطان دوست باشیم اون دنیاهم میریم پیش اون و اگه مثل شما عشق ودوستی مولا علی تو قلبمون با شه حتما در کنار و جوار اون بزرگوار قرار می گیریم به اومید خدا wickietetsu09-12-2008, 06:49 AMممنون از آقای h2 من یه پی ام واستون گذاشتم.لطفا چک کنید barbababak03-10-2010, 02:40 PMبا فرض این که لینک برگه های سایت های مختلف پیدا شدند و تعداد زیادی از اونها داونلود شدند، قدم بعدی چیه؟ این که تمام متن اون صفحه ها رو پس از کنار گذاشتن تگ های اچ تی ام الشون در رکوردهای پایگاه داده ذخیره کرد و با استفاده از دستور LIKE و % در اونها جستجو انجام داد؟ آیا این راه کند نیست؟ چه روشهای بهتری وجود دارند؟ _H2_04-10-2010, 06:15 PMسلام این که تمام متن اون صفحه ها رو پس از کنار گذاشتن تگ های اچ تی ام الشون در رکوردهای پایگاه داده ذخیره کرد و با استفاده از دستور LIKE و % در اونها جستجو انجام داد؟ آیا این راه کند نیست؟ چه روشهای بهتری وجود دارند؟ اصل تفکر و الگوریتمی که در ذهنتان شکل گرفته صحیح است و از این منظر جوابتان بله است. ولی در مورد دستور LIKE جوابتان خیر است. باید یکم بیشتر روی امکانات متعدد SQLServer تمرکز کنید. SQLServer سرویس به نام Full Text Search دارد که با ساختاری به نام Catalog در ارتباط است. این سرویس امکان جستجوی بسیار پرسرعت و با قابلیت های مفهومی (مثل کلمات مشابه و هم معنی و...) را روی متون مقدور میسازد. باید Catalog ای برای ستون جدول مورد نظر بسازید و با سینتکس خاص این سرویس در Catalog تشکیل شده جستجو کنید. برای اطلاعات بیشتر به مدخل زیر مراجعه کنید: http://msdn.microsoft.com/en-us/library/ms142571.aspx سایت ما را در گوگل محبوب کنید با کلیک روی دکمه ای که در سمت چپ این منو با عنوان +1 قرار داده شده شما به این سایت مهر تأیید میزنید و به دوستانتان در صفحه جستجوی گوگل دیدن این سایت را پیشنهاد میکنید که این امر خود باعث افزایش رتبه سایت در گوگل میشود
این صفحه را در گوگل محبوب کنید
[ارسال شده از: سایت ریسک]
[مشاهده در: www.ri3k.eu]
[تعداد بازديد از اين مطلب: 4141]