PDA

View Full Version : سوال: باز کردن صفحه وب در برنامه



karimi72
سه شنبه 01 بهمن 1392, 15:40 عصر
دوستان من می خواهم یک برنامه بنویسیم که به یک آدرس خاص اینترنتی را باز کن و در خودش نشان دهد نمی خواهم اینترنت اکسپلورر یا فایر فکس باز شود باید چه کنم؟ بعد از ان می یک کار دیگر دارم آنهم این است که در آن صفحه یک رشته است می خواهم آن را برای پردازش ذخیره کنم. لطفا راهنماییم کنید.

arash_flag
سه شنبه 01 بهمن 1392, 16:18 عصر
سلام دوست عزیز
شما می توانید از کنترل web wbroser در یک فرم استفاده کنید.
webbrowser1.navigate (" آدرس خود ");

karimi72
چهارشنبه 02 بهمن 1392, 08:12 صبح
سلام دوست عزیز
شما می توانید از کنترل web wbroser در یک فرم استفاده کنید.
webbrowser1.navigate (" آدرس خود ");

به جز این راه راه دیگری می شناسید به خاطر یک سری دلایل نمی خواهم از Web browser استفاده کنم.

Davidd
چهارشنبه 02 بهمن 1392, 09:34 صبح
Selenium و WatiN همين كارو انجام ميده. firefox و IE اتوماتيك باز ميشه و ميتونه حتي روي يك دكمه خودكار كليك كنه و ....
اما اگه هدفت از اينكار فقط ذخيره رشته هست بدون نياز به باز كردن صفحه ؛ كد html صفحه رو دانلود كن و رشته رو توش پيدا كن

karimi72
چهارشنبه 02 بهمن 1392, 10:13 صبح
Selenium و WatiN همين كارو انجام ميده. firefox و IE اتوماتيك باز ميشه و ميتونه حتي روي يك دكمه خودكار كليك كنه و ....
اما اگه هدفت از اينكار فقط ذخيره رشته هست بدون نياز به باز كردن صفحه ؛ كد html صفحه رو دانلود كن و رشته رو توش پيدا كن

لطفا در مورد این گزینه ای که فرمودید یک توضیح کوتاه بدهید به ویژه در مورد تفاوت انها باهم . میشه توضیح بدهید که چگونه صفحه html را ذخیره کنم ؟؟

Davidd
چهارشنبه 02 بهمن 1392, 11:50 صبح
اين دو تا كار automatic browsing انجام ميدن. selenium يه add in داره واسه firefox كه هركاري توي يك صفحه وب انجام بدي record ميكنه و كد c# بهت ميده كه وقتي اجراش كني firefox باز ميشه و همونكارو اتوماتيك انجام ميده.
در مورد ذخيره رشته : اگه اين رشته به صورت پويا (ajax و javascript ) توليد نشه با دستور زير كد Html دانلود ميكني. براي پيدا كردن رشته داخل كد html بايد تگ html رشته رو بدست بياري و مثلا از htmlAgilityPack استفاده كني تا رشته رو استخراج كني

using System.Net;
using HtmlAgilityPack;


WebClient webClient = new WebClient();
//set proxy if need
string html = webClient.DownloadString("www.google.com");
HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(html);
HtmlNode myStringNode = doc.DocumentNode.SelectSingleNode("body/div/tag1/tag2");
string myString = myStringNode.InnerText;


"body/div/tag1/tag2 يك مثال بود و بايد شما آدرس رشته داخل كدرو بجاش بذاري

karimi72
چهارشنبه 02 بهمن 1392, 20:00 عصر
دوست عزیز منطورتان آدرس رشته داخل کد : کد Html است که آن نوشته در بین آنها قرار گرفته است ؟
ولی اگر چندبار این تگ تکرار شده بود تکلیف چیست؟ این دستور کدام یک را بر می گرداند؟
از کمکتان بسیار سپاس گذارم

Davidd
چهارشنبه 02 بهمن 1392, 20:57 عصر
دوست عزیز منطورتان آدرس رشته داخل کد : کد Html است که آن نوشته در بین آنها قرار گرفته است ؟
ولی اگر چندبار این تگ تکرار شده بود تکلیف چیست؟ این دستور کدام یک را بر می گرداند؟
از کمکتان بسیار سپاس گذارم

تگ های HTML میتونن ATRIBUTE داشته باشند مثلا نام یا id که با اینا میتونی دقیقا جای رشترو مشخص کنی.
با این وجود اگه بازم دقیقا مثل هم هستند میتونی به جای دستور SelectSingleNode از دستور SelectNodes استفاده کنی که تمامشو پیدا میکنه و یک collection برمیگردونه.

این روش آدرس دهی هم اسمش xpath هست اگه خواستی سرچ کنی

ا

karimi72
چهارشنبه 02 بهمن 1392, 21:59 عصر
deldadeh108 عزیز از توضیحتان بسیار سپاس گذارم. ولی منظور دقیق تر سوال من اینه که به جای رشته body/div/tag1/tag2 چی باید بگذارم این بخش را متوجه نشده ام مثلادباید در این جا عبارت / بگذارم لطفا درباره این بخش توضیح کوتاهی بدهید.

Davidd
شنبه 05 بهمن 1392, 12:06 عصر
دوست عزیز گفتم که به جای این تگ ها، باید آدرس رشته تو صفحه موردنظرتو بذاری. رشته هر جای صفحه وب که باشه یک آدرس داره. توی فایرفاکس روی رشته کلیک راست کن و Inspect Element بزن تا کدشو ببینی. اگه این آدرس با جاوا اسکریپت و ایجکس تولید نشده باشه باید توی سورس صفحه (ctrl +U) هم وجود داشته باشه.