PDA

View Full Version : یه سوال تخصصی



milade
چهارشنبه 22 خرداد 1387, 20:59 عصر
سلام
یه سوال سخت دارم
لطفا از موضوع پرت نشید
من می خوام یه صفحه داشته باشم که به بانکم وصل بشه و نام بعضی از سایتها رو بگیره و اون صفحات رو باز کنه بعد در یه فیلد دیگه توی جدولم به نام body ذخیره کنه
منظورم از ذخیره کنه body (متن) هست
در ضمن اگه پیوندی هم دید توی اون ادرسها بازش کنه و اونا رو هم ذخیره کنه(البته برنامه های ویندوز هست ولی من می خوام تحت وب باشه و در بانک ذخیره بشه)
(حدودا یه طورایی می خوام مثل گوگل کار کنم)
ممنون:بوس:

raravaice
چهارشنبه 22 خرداد 1387, 21:24 عصر
کار سختیه.

شما باید درخواست رو از سرور به سرور با Httpwebrequest و httpwebresponse یا webclient ارسال کنی.
حالا سورس HTML اون صفحه رو بر حسب نیازت که حالا تصویر یا لینک یا ایمیل هست رو با Regex بخونی.
لینکهای یه صفحه رو استخراج کنی و یه جا توی بانک ذخیره کنی تا بعدا برنامت بره سراغش.

حالا سختیش اینجاست که باید کد Regax رو جوری تنظیم کنی که بتونه لینکهای داخلی و خارجی و همینطور لینکهای خراب رو تشخیص بده و همین طور شرایط کنترل خطا رو تو برنامه جوری ببینی که اگر جایی با یه صفحه یا لینک به مشکل برخورد برنامت متوقف نشه.
همینطور باید یه فضای خیلی زیادی داشته باشی که این اطلاعات رو اونجا ذخیره کنی.

و در پایان اینکه اگر چنین کاری رو کردی ختما از Thread استفاده کن تا هم به CPU فشار نیاره و هم به صورت موازی بتونی آدرس های بیشتری رو مرور کنی


یه چیز دیگه! از این به بعد عنوان تاپیک رو مناسب در نظر بگیر که با مدیران تالار ها به مشکل بر نخوری.
موفق باشید

milade
چهارشنبه 22 خرداد 1387, 21:39 عصر
ممنون
با این چیزایی که شما گفتید که ...
اگه ممکنه حداقل یه کد بدید که همون کد html رو ذخیره کنه ما از خیر پیوندهاشم گذشتیم
ممنون

raravaice
چهارشنبه 22 خرداد 1387, 21:58 عصر
چه زود پشتکارت رو از دست دادی !
این خیلی بده که!



Dim a As New Net.WebClient
Dim output As String = ""
output = a.DownloadString("http://barnamenevis.org")


موفق باشید

milade
چهارشنبه 22 خرداد 1387, 22:09 عصر
ممنون ولی اگه بتونی سوال اولمم جواب بدب دیگه عالیه!!!!!!!!!!!!!
از مدیرها هم به خاطر عنوان عذر می خوام

raravaice
چهارشنبه 22 خرداد 1387, 22:20 عصر
سئوال اولت چی بود؟!

موفق باشید

milade
چهارشنبه 22 خرداد 1387, 22:28 عصر
همون که تایپیک رو باهاش شروع کردم جواب دادید

کار سختیه
...
در ضمن چه طور تگ تیتل رو بیرون بکشم و ذخیره کنم
ممنون

raravaice
پنج شنبه 23 خرداد 1387, 12:49 عصر
Title


Regex.Match(htmlData, "(?<=<title>).*?(?=</title>)", RegexOptions.IgnoreCase Or RegexOptions.ExplicitCapture).Value
Link



Regex.Matches(htmlData, "(?<=<(a|area)\s+href="").*?(?=""\s*/?>)", RegexOptions.IgnoreCase Or RegexOptions.ExplicitCapture)
موفق باشید

chaalesh
جمعه 24 خرداد 1387, 02:00 صبح
دوست عزیز : raravaice (http://barnamenevis.org/forum/member.php?u=37086)
اگه از این کد شما استفاده بشه بهتره یا از Httpwebrequest و httpwebresponse ؟
آیا در استفاده از Httpwebrequest و httpwebresponse تصاویر صفحه هم دانلود میشه ؟
اگه آری اونوقت : از کجا میشه جلوی دانلود تصاویرش رو گرفت ؟ یا از کجا میشه اونا رو برداشت و استفاده کرد ؟

raravaice
جمعه 24 خرداد 1387, 13:17 عصر
اگه از این کد شما استفاده بشه بهتره یا از Httpwebrequest و httpwebresponse ؟
Webclient یه جورایی مشتق شده از این دوتا کلاس پایه هست که کار رو راحت کرده.


آیا در استفاده از Httpwebrequest و httpwebresponse تصاویر صفحه هم دانلود میشه ؟خیر فقط و فقط سورس HTML دانلود میشه و شما اگر میخوای عکس رو هم دانلود کنی باید به جای DownloadString از DownloadData استفاده کنی. البته مسیر عکس رو باید اون موقع از src ها و بک گراندها بکشی بیرون بدی به متغییر که عکس دانلود بشه.

موفق باشید

milade
دوشنبه 17 تیر 1387, 11:34 صبح
اقای raravaice ممنون ولی کد رو توی کدوم قسمت بگذارم؟

title
.
.
.
و ...

raravaice
دوشنبه 17 تیر 1387, 12:54 عصر
مهندس milade این کدی که من دادم باید سمت سرور نوشته بشه به این صورت که رشته حاوی محتویاتت رو بهش میدی و با استفاده از توابع Regex موجود در دات نت و الگویی که بهت دادم تگ a و title رو بکشی بیرون.

راجع به کلاسها و نحوه کار با توابع Regex در دات نت جستجو کن ، نمونه سورس های خوبی پیدا میکنی.

موفق باشید

milade
دوشنبه 24 تیر 1387, 18:34 عصر
اقای raravaice من هر چی گشتم نیافتم حالا نمی شه بگید این کد رو چه طور پیاده کنم