PDA

View Full Version : سوال: خواندن اطلاعات جدول نمايش داده شده در web browser



mahboube
چهارشنبه 08 دی 1389, 11:30 صبح
سلام دوستان
مي خوام بدونم ميشه ميشه اطلاعات يك جدول نمايش داده شده توي webbrowser رو خوند و توي يك جدول ذخيره كرد؟

در واقع چطوري ميشه به كنترل هاي كه توي فرم html‌هستند مثل table دسترسي داشت؟(بايد با tag هاشون دسترسي پيدا كرد؟؟)
ممنون.

Amir Oveisi
چهارشنبه 08 دی 1389, 11:48 صبح
کنترل WebBrowser یک property به اسم Document داره که میتونین با استفاده از اون به element های موجود در یک Web Page دسترسی داشته باشید و همچنین میتونین Attribute های اونارو تغییر بدید یا اینکه Command هاشونو اجرا کنید.
برای اطلاع بیشتر مطلب زیر رو مطالعه کنید:
http://msdn.microsoft.com/en-us/library/system.windows.forms.webbrowser.document.aspx

mahboube
چهارشنبه 08 دی 1389, 12:18 عصر
اينو ميدونم.
فقط نمي دونم چون توي webpage، المنت ها نام يا يه شناسه ندارن به يك جدول خاص مثلا جدول 12 هم صفحه ميشه دسترسي داشت؟
اين شكلي مثلا:


HtmlElementCollection oTBL=webBrowser1.Document.GetElementsByTagName("table");
for (int i = 0; i < oTBL.Count;i++ )
{

// HERE is ur current table----- oTBL[i]
// Do ur process
}

Amir Oveisi
چهارشنبه 08 دی 1389, 12:55 عصر
بالاخره باید به یک نحوی بتونین اون element مورد نظر رو تشخیص بدین. که این هم با آنالیز source اون web page امکان پذیر خواهد بود. مثلا ممکنه یه element ای id نداشته باشه اما value داشته باشه که شما اون موقع میتونین با مقدار value به اون دسترسی داشته باشید.
در کل بستگی به اون page داره.
کد شما که نوشتید درسته، اما باید بتونین تشخیص بدید با کدوم table قراره کار کنید.

mahboube
چهارشنبه 08 دی 1389, 13:11 عصر
خب من هيچي از table ها نمي دونم.مثلا جدول هاي حساب بانكي يه نفر.و برام شماره table ها مهمه.
فكر ميكنم بشه با ايندكس بالا بهش دسترسي داشت؟
بعد يه سوال ديگه:اين webbrowser رو ميشه باهاش صفحه هاي Html ذخيره شده روي سيستم رو هم نشون داد؟
ممنون.

mahboube
چهارشنبه 08 دی 1389, 13:24 عصر
سوال دومي كه اين بود جوابش.


webBrowser1.Navigate("C:\\Documents and Settings\\user\\Desktop\\C#.htm");


يه مشكل فقط وجود داره براكنترل هاي ديگه مشكلي نيست ولي براي table چون يه سري جدول ها هم هستند كه براي جدول بندي صفحه استفاده شدن.و من فقط جدول هاييو ميخوام كه توش داده هست.
اينا تو تگاشون فرقي با هم ندارن؟چه طوري ميشه تشخيص داد؟
ممنون.

Amir Oveisi
چهارشنبه 08 دی 1389, 15:00 عصر
شما سورس html اش رو اینجا قرار بدید تا بشه در موردش بحث کرد.

mahboube
چهارشنبه 08 دی 1389, 15:22 عصر
باشه.
البته اين براي همه صفحات وب عين همه.يك سري جدول هستند كه داده دارند يك سري جدول هم هستند كه فقط براي جدول بندي صفحات استفاده شدند.من يك نمونه هم ميزارم.
اين لينكش:
http://90tv.ir/persiangulf_table
اين صفحه html رو در نظر بگيريد يك جدول داره كه اطلاعات روشه يه سري جدول ها هم كه كاربردشون براجدولبندي صفحه است.
در ضمن با اين كد به تمام ستون ها دسترسي داريم.


HtmlElementCollection oTBL=webBrowser1.Document.GetElementsByTagName("table");
for (int i = 0; i < oTBL.Count;i++ )
{
//HtmlElement table = webBrowser1.Document.GetElementById("id_of_the_table");
// use the table to extract data from columns and rows
foreach (HtmlElement rowElem in oTBL[i].GetElementsByTagName("TR"))
{
foreach (HtmlElement colElem in rowElem.GetElementsByTagName("TD"))
{
string html = colElem.InnerHtml;
MessageBox.Show(html);
// ...
}
}
}

mahboube
شنبه 11 دی 1389, 13:53 عصر
وقتي ميخوام توweb browser بعضي صفحه ها رو از روكامپيوتر باز اكنم اين خطا رو ميده؟كسي ميدونه براچيه؟
64396

ali.rezaei7
شنبه 11 دی 1389, 14:36 عصر
وقتي ميخوام توweb browser بعضي صفحه ها رو از روكامپيوتر باز اكنم اين خطا رو ميده؟كسي ميدونه براچيه؟
64396

فکر می کنم در این فایل HTML اسکریپت های Client Side مانند جاوا اسکریپت وجود داره. یکی از این اسکریپت ها باعث رخ دادن این خطا شده. باید اسکریپت رو بررسی کنی تا بفهمی مشکل از کجاست.

Amir Oveisi
شنبه 11 دی 1389, 16:12 عصر
خوب شما میتونین table ها رو اول در بیارید و بعد بر اساس class ای که table مورد نظر شما داره به table دسترسی داشته باشید.
اگر سورس html رو نگاه کنید class اون table اینه: views-table
با استفاده از متد GetAttribute("class") میتونین چک کنید که table فعلی، table شما هست یا نه.

mahboube
یک شنبه 12 دی 1389, 10:10 صبح
خوب شما میتونین table ها رو اول در بیارید و بعد بر اساس class ای که table مورد نظر شما داره به table دسترسی داشته باشید.
اگر سورس html رو نگاه کنید class اون table اینه: views-table
با استفاده از متد GetAttribute("class")میتونین چک کنید که table فعلی، table شما هست یا نه.
اين كلاس ها هميشه ثابتن؟براي دو تاجدول مختلف هيچوقت تكراي نيستند ؟
البته من اينجا چون صفحه هام ثابت بود شماره جدولم هم ثابته.ازش استفاده كردم.

mahboube
یک شنبه 12 دی 1389, 10:12 صبح
وقتي ميخوام توweb browser بعضي صفحه ها رو از روكامپيوتر باز اكنم اين خطا رو ميده؟كسي ميدونه براچيه؟
64396

بااين دستور درست ميشه.خطارو نشون نميده.(از توي IE هم ميشه تنظيمش كرد)


webBrowser.ScriptErrorsSuppressed = true;