View Full Version : حرفه ای: ساخت RSS خوان خودکار
Maryam.J
یک شنبه 05 خرداد 1392, 13:03 عصر
سلام دوستان. توی سایت جستجو کردم، جوابم رو پیدا نکردم.
من میخوام برای خودم یه سایت RSS خوان بنویسم.
برای خوندن خودکار RSS از این دوتا مقاله استفاده کردم:
تایمر:
http://weblogs.asp.net/muhanadyounis/archive/2009/01/12/global-timer-background-timer.aspx
خوندن RSS:
http://www.codeguru.com/csharp/csharp/cs_network/internetweb/article.php/c10985/Displaying-RSS-Items-with-C-and-ASPNET.htm
اولا میخوام بدونم این روش ها درسته؟
دوما مشکلی که دارم اینه:
با این روش تو هربازه زمانی، همه خبرهای RSS به دیتابیس اضافه میشن. میخوام بدونم چطور بفهمم کدوم یکی رو قبلا خوندم که دوباره نخونم(یا به دیتابیس اضافه نکنم)
خیلی ممنون میشم اگه کمکم کنید :قلب:
Maryam.J
یک شنبه 05 خرداد 1392, 16:39 عصر
بروز رسانی
fakhravari
یک شنبه 05 خرداد 1392, 23:34 عصر
یه فیلد بزار تیک تایید همچین چیزی دیگه
Maryam.J
دوشنبه 06 خرداد 1392, 08:48 صبح
یه فیلد بزار تیک تایید همچین چیزی دیگه
یه فیلد کجا بذارم؟؟؟؟ من میخوام بدونم از RSS کدوم جدیده. یه چیزی میگینا! :افسرده:
mehdin69
دوشنبه 06 خرداد 1392, 09:50 صبح
لینک هایی که Rss میده میشه گفت unique هستند اگه لینک ها تکراری نباشند میگن مطلب جدیده
fakhravari
دوشنبه 06 خرداد 1392, 09:57 صبح
ببین
سادن که!
شما میتونید یه فیلد تایید بزارین که اگر تیک خورده بود نمایش بده پیشفرض هم false باشه
Maryam.J
دوشنبه 06 خرداد 1392, 10:44 صبح
لینک هایی که Rss میده میشه گفت unique هستند اگه لینک ها تکراری نباشند میگن مطلب جدیده
من هر 1 ساعت RSS رو چک میکنم و میخوام مطلب های جدید رو بگیرم. نه اونایی که 1 ساعت پیش گرفتم.
ببین
سادن که!
شما میتونید یه فیلد تایید بزارین که اگر تیک خورده بود نمایش بده پیشفرض هم false باشه
یعنی میگید خبرها بعدش توسط مدیر تایید بشه؟؟؟ میخوام خودکار باشه
mehdin69
دوشنبه 06 خرداد 1392, 12:41 عصر
خب کل مطالب توی هر یه ساعت رو میگیرد اونایی رو نگه میدارید که لینکشون یکی نیست مثل دستور Distinct توی sql که داده های تکراری رو حذف میکنه
Maryam.J
دوشنبه 06 خرداد 1392, 14:10 عصر
خب کل مطالب توی هر یه ساعت رو میگیرد اونایی رو نگه میدارید که لینکشون یکی نیست مثل دستور Distinct توی sql که داده های تکراری رو حذف میکنه
بله منم همین ب ذهنم رسید. ولی خوب یکم فشار روی سرور زیاد میشه دیگه..
اول اینکه کل RSS رو بگیره. بعد به ازای هر خبری که توی RSS هست کل دیتابیس رو یه بار چک کنه! این یکم زیاد نیست؟ فرض کنید بخواد 10 تا RSS رو چک کنه.
اگه بخوایم این کار رو بکنیم، چیزی که الان به ذهنم رسید اینه که توی لود اولیه، همه دیتابیس رو بریزه توی یه استراکت (مثلا عنوان و آدرس) بعد بجای اینکه RSS رو با دیتابیس چک کن، با اون چک کنه! این بهتره
mehdin69
دوشنبه 06 خرداد 1392, 14:36 عصر
ببخشید که اونجوری گفتم برام مهم این بود که بدونین چجوری Rss تکراری رو تشخیص بدید...
چند راه دارید اول : یه ارایه از مثلاً 10 داده آخر دیتابیس بسازید با تابع compare مقایسه کنین چیزی که الان می خواد بیاد تکراری هست یا نه دیگه اگه تکراری نبود ادامه کار رو انجام بدید ....
دوم شما همیطور همه چیز رو هر روز از rss بریزید تو دیتابیس هر یک ساعت فقط یه کار کوچیک می خواد کنین آخر هر روز دیتابیس رو یه Shirink کنین که زمان خیلی خیلی کمی میگیره ازتون ( البته اگه دیتابیس sql هست ).
Maryam.J
سه شنبه 07 خرداد 1392, 09:25 صبح
با تشکر از mehdin69، مشکلات قبلیم حل شد.
الان یه چیزی که نمیدونم چطوره و چیکارش کنم، عکس خبره! توی خیلی از RSS ها عکس خبر نیست ولی خبرخوان هایی مثل خبرفارسی (http://khabarfarsi.com/)برای هر خبر عکس میارن.
کسی میدونه اینو چیکارش باید بکنم؟ چطور عکس ها رو بگیرم؟ :متفکر:
alireza.b
سه شنبه 07 خرداد 1392, 09:52 صبح
اگر سایتتون وردپرس باشه با یه سرچ تو گوگل کلی افزونه خواندن rss و ارسال روی ساتتون رو پیدا می کنید
Maryam.J
سه شنبه 07 خرداد 1392, 11:05 صبح
ممنون. اما وردپرس نیست. خودم دارم از اول می نویسم :خجالت:
Maryam.J
سه شنبه 07 خرداد 1392, 22:47 عصر
بچه ها کمک کنید.
چطور عکس بگیرم برای RSS ها.:ناراحت:
ممون
mehdin69
چهارشنبه 08 خرداد 1392, 00:23 صبح
خب اینکه کاری نداره شما که تا اینجاش اومدین
عکس ها معمولاً توی تگ img هستن به ترتیب هر node از فایل rss رو که می خونین بگردید دنبال تگ img و با استفاده از substring آدرس عکس رو بگیرید
با کلاس webclient عکس رو دانلود کنید و به پروژه خودتون اضاف کنین
به همین راحتی :)
Maryam.J
چهارشنبه 08 خرداد 1392, 08:55 صبح
ممنون. حرف شما درسته. بعضی از RSS ها تگ img دارن که میتونم استفاده کنم.
اما خیلی ها ندارند. در حالی که اگه به این سایت نگاه کنید (http://khabarfarsi.com/)، میبینید با اینکه rss ها تگ img ندارند، برای خبرها عکس میاره. میخوام بدونم این چطوریه!! از کجا عکسها رو میاره؟:متفکر:
مسلما متن اصلی خبر رو که چک نمیکنه!! چون حجمش زیاد میشه!! :اشتباه:
ممنون میشم اگه کسی چیزی میدونه یا نظری داره بگه. :لبخندساده:
mehdin69
چهارشنبه 08 خرداد 1392, 11:42 صبح
دقت کنین داره
عکس و پس کجا نشون بده خو؟ :دی
<description><div id = "time_stamp"><h4>زمان دریافت خبر: سه شنبه ۰۷ خرداد ۱۳۹۲ ساعت ۱۲:۵۸</h4></div><div id = "refrence"><h3>منبع خبر: <a href="/%D8%A8%D9%87%D8%A7%D8%B1_%D9%86%DB%8C%D9%88%D8%B2" >بهار نیوز</a></h3></div><div id = "category"><h3>طبقه بندی: <a href="/%D8%A7%D8%AE%D8%A8%D8%A7%D8%B1_%D8%B3%DB%8C%D8%A7% D8%B3%DB%8C">سیاسی</a></h3></div><p>عابدینی در پاسخ به این سوال که شما در بحث انتقاد آقای روحانی به سازمان صداوسیما ورود نکردید، دلیلش چه بود؟ آیا اجازه این کار را نداشتید و یا خودتان نخواستید ورود کنید؟ توضیح داد: به صورت کلی گفت وگوی ویژه مناظره نیست و بنای چالش با کاندیدا را ندارد. بنابر این فرصتی ایجاد می شود تا داوطلب دیدگاه های خود را در حوزه اقتصاد، سیاست و فرهنگ بیان کند. قرار نیست که اگر کسی صحبتی را مطرح کرد، ما در مقام پاسخگویی برآییم. - در همین حال نظرسنجی های مختلف نشان از پیشی گرفتن محسن رضایی از چهار کاندیدای دیگر اصولگرایان دارد و این در حالیست که با وجود رد صلاحیت هاشمی رفسنجانی توسط شورای نگهبان ...</p> <div style = "display: table;"><div style = "float: right; margin-left: 10px; margin-top: 10px; display: table; position: static; height: 162px; overflow: hidden; width: 162px; border: 1px solid gray;"><div style = "display: table-cell; position: static; vertical-align: middle; text-align: center; top: 50%; width: 100%;"><div style = "margin-left: auto; margin-right: auto; width: 162px; position: relative; text-align: center;"><a href="http://khabarfarsi.com/n/5424531"><img src="http://ir.static.khabarefarsi.com/sites/default/files/imagecache/news_thumbnail/news_image/2013/05/28/8513697299751369729975_4433.jpg" alt="روحانی، عارف و رضایی در صدر نظرسنجی ها" title="روحانی، عارف و رضایی در صدر نظرسنجی ها" width="150" height="94" class="imagecache imagecache-news_thumbnail"/></a></div></div></div></div><br /><a href="http://khabarfarsi.com/ext/5424531">مشاهده متن اصلی خبر</a></description>
توش نوشته
img src="http://ir.static.khabarefarsi.com/sites/default/files/imagecache/news_thumbnail/news_image/2013/05/28/8513697299751369729975_4433.jpg
:)
دیدین داره؟ :)
Maryam.J
چهارشنبه 08 خرداد 1392, 12:49 عصر
اولا من گفتم این سایت خودش خبرخوانه و rss سایت های دیگه رو میخونه و در حالی اون rss ها عکس ندارند، براشون عکس میاره!
دوما نداره!!! :لبخند:
من منظورم این RSS هاست:
http://itanalyze.com/index.xml
http://www.mehrnews.com/rss
http://www.yjc.ir/fa/rss/allnews
http://niknews.ir/fa/rss/allnews
همونطور که میبینید، این rss ها نه تگ img دارند، و نه توی توضیحاتشون توی rss عکسی هست، با این حال اون سایت خبرخوان(خبرفارسی) براشون عکس میاره!!
چطوری؟؟؟:عصبانی++:
مرسی :ناراحت:
mehdin69
چهارشنبه 08 خرداد 1392, 14:11 عصر
راه زیاد داره
اما اصولاً این سایت ها یه صفحه مدیریت دارن
صفحه مدیریت لینک rss رو میدن که rss ها خونده شه
بعد که rss ها خونده شد لینک rss ها میره برا تحلیل بصورت اتوماتیک حالا اینجا میکن rss که دادید خبر اصلی بین چه تگ هایی هست
مثلاً میزنن div با id=news :)
حالا خود برنامه خبر رو میخونه میریزه تو دیتابس خودش
لینک عکس و اینا هم میاد :)
با همون webclient میتونن صفحه رو دانلود کنن تا عکس صفحه به سایت خودشون منتقل شه
حالا که به سایت خودشون منتقل شد لینک و تصویر خبر کار میکنه
:)
Maryam.J
چهارشنبه 08 خرداد 1392, 14:58 عصر
اون قسمت اول حرفاتون رو قبول دارم و منم همونطوری کار کردم :تشویق:
اما اینکه موقع خوندن RSS، برای هر خبر، متن کاملش رو میخونند و عکس رو از توش میگیرند یکم غیر منطقیه! :افسرده:
مثلا فرض کنید 20 تا rss ثبت شده باشه. هر 1 ساعت چک میشن. اگه هر ساعت به هر rss، حداقل 3 تا خبر هم اضافه شده باشه، یعنی هر ساعت باید 60 تا صفحه رو دانلود کنه! این یکم زیاده. تازه آمار رو خیلی کم گفتم!! :ناراحت:
پیشنهاد دیگه ای نیست؟؟
mehdin69
چهارشنبه 08 خرداد 1392, 17:57 عصر
نه من کی گفتم هر بار همه رو دانلوود کنید؟ :-o
اونایی رو دانلود کنین که تکراری نیستن
داده زیادی می خواین دانلود کنین چی شه؟
Maryam.J
چهارشنبه 08 خرداد 1392, 19:55 عصر
نه من کی گفتم هر بار همه رو دانلوود کنید؟ :-o
منم نگفتم شما یه همچین چیزی گفتین!!! :اشتباه:
من گفتم شما میگید همه اون جدیدایی که میخوام به دیتابیس اضافه کنم رو متنش رو با webrequest بگیرم. و به نظرم این یکم زمانگیره و به سرور فشار میاره. اینطوری نیست؟؟
mehdin69
جمعه 10 خرداد 1392, 18:27 عصر
شما به نتیجه رسیدید؟
برای image راه حل جمع و جور تری پیدا کردید؟
Maryam.J
شنبه 11 خرداد 1392, 08:48 صبح
شما به نتیجه رسیدید؟
برای image راه حل جمع و جور تری پیدا کردید؟
سلام دوست عزیز. من که هرچی گشتم راه حل بهتری پیدا نکردم. این روشی هم که اینجا روش بحث شد رو ترجیح دادم نذارم!! :اشتباه:
اگه چیزی پیدا کردم اینجا میذارم. :لبخندساده:
Maryam.J
شنبه 11 خرداد 1392, 12:16 عصر
من کلا میگم اگه من بخوام انجامش بدم چیکار میکنم. این یه مثاله. توی یه پروژه دیگه استفاده کردم. اما این کار هم شبیه همینه:
WebRequest request = WebRequest.Create(url);
request.Credentials = CredentialCache.DefaultCredentials;
System.Diagnostics.Stopwatch timer = new Stopwatch();
HttpWebResponse response = null;
try
{
response = (HttpWebResponse)request.GetResponse();
}
catch (Exception err)
{
errorstr = "خطایی رخ داد. جزئیات خطا:<br>درخواست شما TimeOut شد. بعدا دوباره تلاش کنید.";
return;
}
Stream dataStream = response.GetResponseStream();
StreamReader reader = new StreamReader(dataStream);
string responseFromServer = reader.ReadToEnd();
try
{
title = responseFromServer.Substring(responseFromServer.In dexOf("<title>") + 7);
title = title.Substring(0, title.IndexOf("</title>"));
}
catch { title = "ندارد"; }
توی این کد یه صفحه رو گرفتم و بعد با Substring گفتم از شروع <title> تا پایانش که میشه </title> بگیر. که میشه عنوان صفحه.
حالا فرض کنید اون صفحه ای که توضیحات خبر رو داره یه عکس داره. بالاخره عکسه توی یه تگی هست دیگه. یا مثلا یه کلاسی داره! یا یه ID داره. بالاخره به یه روشی اون عکس رو میشه پیدا کرد. همین.
من زیاد دنبالش نرفتم. اما شاید بشه بدون استفاده از Substring هم اون عکس رو پیدا کرد(مثلا شاید با id اون عکس) خودتون بگردید
ایمان اختیاری
شنبه 11 آبان 1392, 18:51 عصر
سلام مریم خانوم . وقت شما بخیر .. در مورد مشکلتون به کجا رسیدید ؟ چون بنده هم دارم یه فید خوان می نویسم دنبال یه موضوع دیگه بودم رسیدم اینجا..
mohammad-gh
دوشنبه 14 بهمن 1392, 19:12 عصر
میشه یکی یه راه حل برای این مشکل بگه ، چون من هم دنبال گرفتن عکس از طریق rss هستم جالب اینجاست که افزونه های ورد پرس به سادگی این کار رو می کنند !!!!
EnKamran
دوشنبه 14 بهمن 1392, 22:55 عصر
با HtmlAgility کار کردید؟ یک کامپوننت برای ASP هست
safa.net
سه شنبه 15 بهمن 1392, 01:01 صبح
با سلام
اگه یک نمونه باشه بهتر میشه به صورت پروزه روش کار کرد
yousefi.it
پنج شنبه 27 اسفند 1394, 06:08 صبح
من یه سایتی یافتم که خیلی خوب تصویری داره روی asp.net آموزش میده بصورت ویدیویی و تصویری در ضمن تدریس پایگاه دادش فوقالعاده هست.می زارم اگه خواستید استفاد کنید. البته چون عجله داشتم خریدم ازشون ولی شما صبر کنید ویدیوهاشو می زارن بزودی از ویدیو های دیگشونم می تونید استفاده کنید .
هدف از انتشار این پروژه آموزش به شما دوستان در زمینه طراحی وب سایت (http://www.youtobnet.ir) با زبان سی شارپ و محیط ASP.NET می باشد.
http://www.youtobnet.ir/%D8%A2%D9%85...%88%D9%84.html (http://www.youtobnet.ir/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D8%A7%D8%AE%D8%A8%D8%A7%D8%B1-%D9%BE%D8%B4%D8%AA%DB%8C%D8%A8%D8%A7%D9%86%DB%8C/%D9%85%D8%B7%D8%A7%D9%84%D8%A8-%D8%A2%D9%85%D9%88%D8%B2%D8%B4%DB%8C/item/244-%D8%A2%D9%85%D9%88%D8%B2%D8%B4-asp-net-%D8%AC%D9%84%D8%B3%D9%87-%D8%A7%D9%88%D9%84.html)
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.