PDA

View Full Version : سوال: خواندن اخبار یک سایت بدون استفاده از RSS (+یک هدیه کوچک به اولین پاسخ کامل)



JikSearch
چهارشنبه 13 آذر 1387, 11:24 صبح
با سلام
مسئله: جمع آوری اخبار یک سایت و ذخیر آنها در دیتابیس (تاریخ، عنوان و متن خبر)

راه حل الف:
1- دانلود کد های صفحه خبر
2- تجزیه عنوان، متن و ... (مثلاً عنوان bold و قرمز هست)
3- ذخیره در دیتا بیس

کد مرحله اول:


//STEP 1: Create a WebClient instance
WebClient objWebClient = new WebClient();
//STEP 2: Get HTML code
const string strURL = "http://www.irna.ir (http://www.irna.ir/)";
System.Text.UTF8Encoding objUTF8 = new System.Text.UTF8Encoding();
lblHTMLOutput.Text = objUTF8.GetString(objWebClient.DownloadData(strURL ));


در مورد مرحله دوم و نحوه ساخت pattern برای اخبار یک سایت و ایجاد یک پنل برای کاربر که بتواند سایت جدید و الگو آن را تعریف کند نیاز به راهنمایی و راه حل دارم
یا هر راه حل دیگری که پیشنهاد می کنید

برای تشکر به اولین جواب کامل یک اکانت رپیدشیر یک ماهه تقدیم می گردد(البته در مقابل کمک شما هیچ هست و فقط برای تشکر می باشد)
جواب کامل: سورس نمی خواهم فقط راه حل دقیق که کارم راه بیافته

پیشاپیش از توجه همه متشکرم

Behrouz_Rad
چهارشنبه 13 آذر 1387, 11:33 صبح
در اینجا فقط می تونی از RegEX استفاده کنی! می بینید چقدر RegEx کاربرد داره؟
بحث کنترل پنل برای ایجاد الگو یک بحث جداست و کار زیادی رو می طلبه. نمونه ی کنترل پنل رو می تونی در برنامه ی Expresso ببینی...

در ضمن، اون تکه کدی که برای بازیابی سورس صفحه نوشتی همیشه جواب نمیده. مثلاً من یک زمانی نیاز داشتم که سورس صفحه ی بورس تهران رو بردارم، اما خطا گرفته میشد! فهمیدم که برنامه نویس اون سایت، User Agent کاربر رو بررسی می کنه. در نتیجه از HttpWebRequest استفاده کن و هر چه پارامتر لازمه رو به صفحه پاس بده. نمونه ای از Http Headers ها رو می تونی از طریق Firebug، Http Sniffer، Flash Get و ... ببینی.

موفق باشید.

JikSearch
چهارشنبه 13 آذر 1387, 12:45 عصر
سلام بهروز جان، ممنون بابت توجه ات
اصلاً این راه حلی که انتخاب کردم منطقی و درست هست؟ یعنی حساب کنم کنم که خبر تو صفحه www.sample.com/news.ext?id=78 (http://www.sample.com/news.ext?id=78) هست و عنوان قرمز+Bold و تاریخ با سایز 8 و ...
درسته که اینجوری دنبال فیلد ها بگردم؟
خوب شد کتابت رو گرفتم ها (2تا فرستادی تهران- خ فلسطین ...)
در مورد HttpWebRequest هم درست می فرمائید نمونه اش صفحه اصلی یاهو خیلی با اون کد فرق می کنه
+ سوال جدید: اینجوری نتایج جستجو گوگل را هم میشه برداشت؟

Behrouz_Rad
چهارشنبه 13 آذر 1387, 13:31 عصر
اصلاً این راه حلی که انتخاب کردم منطقی و درست هست؟ یعنی حساب کنم کنم که خبر تو صفحه www.sample.com/news.ext?id=78 هست و عنوان قرمز+Bold و تاریخ با سایز 8 و ...

خبرها یا در صفحه ی اصلی هستن یا قصد داری که به آرشیو اونها هم دسترسی داشته باشی که در این حالت باید لینک مرتبط رو رهگیری کنی. کلاً کاری که میخوای انجام بدی کار کوچیکی نیست و زمان میبره چون هر سایتی الگوی خاصی داره.


اینجوری نتایج جستجو گوگل را هم میشه برداشت؟

شما هر چی بخوای می تونی برداری. تنها نکته اینه که اخلاقیات اینجا آدم رو قلقلک میده! ;)

JikSearch
چهارشنبه 13 آذر 1387, 14:58 عصر
در مورد اخلاقیات:
روابط عمومی یه جایی (آره همون جا) می خواهد اخبار مرتبط با خودش رو پیدا کنه برای پاسخگویی و پیگیری، الان یه آدم داره این کار رو می کنه می خواستم اینجوری سریعتر انجام بشه
اصلاً بحث سوء استفاده نیست

در مورد راه حل solution : این راه که گفتم درسته؟ یا راه دیگری هم هست؟
باز هم ممنون از توجه ات

Behrouz_Rad
چهارشنبه 13 آذر 1387, 15:16 عصر
با گردن کلفت ها می پری ;) . یعنی در یک سری سایت هایی که به سیستم معرفی می کنید، تعدادی کلمات کلیدی رو جستجو کنه؟
راه پایش همونیه که انتخاب کردی. خیلی وقت پیش هم گروهی ایرانی این کار رو انجام داده بود که مصاحبشون در چند تا روزنامه هم چاپ شد.

موفق!

JikSearch
چهارشنبه 13 آذر 1387, 15:19 عصر
ما کوچیک شما هم هستیم + همیشه هم استاد مایی + هر چی بلدیم از شما یاد گرفتیم
اسم و رسمی از این گروه یادت هست؟
دقیقاً : "یعنی در یک سری سایت هایی که به سیستم معرفی می کنید، تعدادی کلمات کلیدی رو جستجو کنه؟"

Behrouz_Rad
چهارشنبه 13 آذر 1387, 15:31 عصر
اسم گروه رو برای من نفرستادید. کتاب رو برای اتاق 609 فرستادم.

JikSearch
پنج شنبه 14 آذر 1387, 15:16 عصر
اسم گروه ایرانی که این کار رو قبلاً انجام دادند منظورم هست، اگر بشه ازشون بخریم

Behrouz_Rad
پنج شنبه 14 آذر 1387, 22:39 عصر
اسمش یادم نیست. خیلی وقت پیش بود. با PHP و AJAX نوشته بودن. اگر همکار بودیم میتونستیم 1 ماهه تمومش کنیم ;)