PDA

View Full Version : دریافت اطلاعات از یک صفحه ی وب



fox2030
دوشنبه 24 بهمن 1390, 02:09 صبح
سلام
میخواستم ببینم چطور میشه اطلاعات یک صفحه ی وب رو با کریستال ریپورت گرفت و در برنامه استفاده کرد.
(تا حالا با کریستال ریپورت کار نکردم)

مثلا اطلاعات این صفحه (http://www.ime.co.ir/Futures_fix/Futures_MarketWatch_FIX_fa.aspx) رو چطور میشه دریافت کرد؟

اصلا برای این کار باید از کریستال ریپورت استفاده کرد؟:متفکر:

باتشکر

Alirezanet
دوشنبه 24 بهمن 1390, 16:34 عصر
دوست عزیز شما اول باید اطلاعات رو دریافت کنید و این ربطی به کریستال ریپورت نداره شما باید از Reference , mshtml.dll استفاده کنید و td های موجود توی صفحتون رو بخونید ....

fox2030
دوشنبه 24 بهمن 1390, 23:48 عصر
ممنون، فقط یه توضیح میدین که از این dll چطور باید استفاده کنم؟

Hossis
سه شنبه 25 بهمن 1390, 01:09 صبح
دوست عزیز شما اول باید اطلاعات رو دریافت کنید و این ربطی به کریستال ریپورت نداره شما باید از Reference , mshtml.dll استفاده کنید و td های موجود توی صفحتون رو بخونید ....
از این dll ها لازم نیست استفاده کنید. می تونید از وب بروزر هم استفاده کنید و تگ های صفحه وب رو بخونید
من تو این زمینه زیاد کار کردم
با کد زیر, در خط اول , صفحه مورد نظر رو لود می کنید و در خط دوم, متن صفحه وب همراه با تگ ها رو می خونید
webBrowser1. WB.Navigate (Address)
mystring = WB.DocumentText

ولی نمایشش در کریستال, یک بحث دیگه هست که من اصلا کار نکردم

Alirezanet
سه شنبه 25 بهمن 1390, 09:48 صبح
از این dll ها لازم نیست استفاده کنید. می تونید از وب بروزر هم استفاده کنید و تگ های صفحه وب رو بخونید
من تو این زمینه زیاد کار کردم
با کد زیر, در خط اول , صفحه مورد نظر رو لود می کنید و در خط دوم, متن صفحه وب همراه با تگ ها رو می خونید
webBrowser1. WB.Navigate (Address)
mystring = WB.DocumentText

ولی نمایشش در کریستال, یک بحث دیگه هست که من اصلا کار نکردم

این هم میشه ولی مشکلی که هست اینرفیس خاصی برای خواندن تگ ها نداره ! و باید بیشتر به صورت متن صفحتون رو بخونید و توی یک فایل متنی به دنبال تگ های مورد نظرتون بگردید !
استفاده از mshtml خیلی بهتره چون برای تمامی تگ های موجود در صفحه وب شما اینترفیسی طراحی شده که بسته به نوع تگ امکاناتش فرق میکنه ! و حتی میتونید به راحتی با یک For بین تگ ها حرکت کنید و ازشون اطلاعاتی که میخواید استخراج کنید .
این امکان رو کلاس پیشفرض html که برای خود web Browser استفاده میشه هم داره ولی خیلی محدودتر هست و بیشتر برای کارهای ساده قابل استفادست.. .

در مورد نحوه استفاده mshtml هم : با یک سرچ کوچیک تعداد زیادی Sample توی Msdn و ... پیدا میشه که کارتون رو راه میندازه ! اگه در نهایت 1 درصد چیزی پیدا نکردید بگید تا براتون ی Sample بفرستم !

موفق باشید !

alimanam
سه شنبه 25 بهمن 1390, 11:26 صبح
با سلام

نیازی به استفاده از dll نیست به راحتی میشه با استفاده از کنترل WebBrowser این کار رو انجام داد به این صورت که با ارجاع لینک اون صفحه به کنترل وب بروزر و کد زیر به تک تک تگ های اون دسترسی دارین ( البته بعد از لود شدن صفحه مورد نظر )

LTP.Text = WebBrowser1.Document.GetElementById("LTP").InnerText


http://1.eup.comze.com/photos/71e0f7e2d992.png
موفق باشید./

Alirezanet
چهارشنبه 26 بهمن 1390, 01:46 صبح
با سلام

نیازی به استفاده از dll نیست به راحتی میشه با استفاده از کنترل WebBrowser این کار رو انجام داد به این صورت که با ارجاع لینک اون صفحه به کنترل وب بروزر و کد زیر به تک تک تگ های اون دسترسی دارین ( البته بعد از لود شدن صفحه مورد نظر )

LTP.Text = WebBrowser1.Document.GetElementById("LTP").InnerText


سلام
یا تمام احترامی که برای دوست خوبم (علی) قائلم باید بگم که من هم اصراری ندارم کسی از این dll استفاده کنه ! من با توجه به سورس اون صفحه که دوستمون گذاشته بودند خواستم راهنماییشون کنم !
چون تمام کنترل های توی صفحه Id ندارند و اگر هم داشته باشند به طور مثال ComboBox بالای صفحه رو بخوایم مقدارشو تغییر بدیم یا کنترلی رو از نام کلاسش پیدا کنیم یا یک For بین یکسری کنترل خاص بزنیم بهتره از mshtml استفاده بشه !
به طور مثال در مورد ComboBox میشه اینطوری نوشت :

Dim Doc As mshtml.HTMLDocument = WebBrowser1.Document.DomDocument
Dim cmb As mshtml.HTMLSelectElement = Doc.getElementById("cmbContractDescription")
For Each c As mshtml.HTMLOptionElement In cmb.all
c.selected = True
'c.className
'c.tagName
'c.value
'c.lastChild
'c.click()
'c.FireEvent("EventName", Nothing)
'c.hasChildNodes()
'c.insertBefore("NewElement")
'And.......
Next

قسمت هایی که کامنت کردم امکاناتی هست که مستقیم از Document نمیشه گرفت ! به دلیل استفاده از این امکانات که توی مثال بالا گذاشتم پیشنهاد دادم از این NameSpace استفاده بشه !

alimanam
چهارشنبه 26 بهمن 1390, 06:34 صبح
با سلام به دوست عزیزم علی جان امیدوارم حالتون خوب باشه

علی جان من هم دقیقا به دلیل سورس Html اون لینک عرض کردم نیازی به استفاده از dll نیست چون به دست اوردن id تمامی مقادیری که در سورس اون Page هستش به راحتی بوسیله کنترل وب بروزر امکان پذیره . البته فرمایشات شما رو هم قبول دارم ( در مورد توضیحاتی که دادین ) اما به خاطر داشته باشین که همیشه یه برنامه نویس عاقل همیشه با داشته های موجودش کارش رو پیش میبره و اگه داشته هاش از پس مشکلاتش بر نمیاد رو میاره به بقیه امکاناتی که بهشون دسترسی داره اما همین کار خودش باعث کاهش پایداری برنامه و افزایش ریسک خطاهای External برنامه میشه . امیدوارم موضوع رو تا اندازه ایی روشن تر کرده باشم . راستی برای بدست اوردن id و... میتونین از ابزارها و Extenstion های زیادی که برای Web Developer ها نوشته شدن استفاده کنین مثل افزونه Firebug که به فایرفاکس اضافه میشه یا اگه از کروم یا Dragon استفاده میکنین خودشون شبیه اش رو به صورت پیش فرض دارن .

http://www.hostpic.org/images/788758.png

موفق باشید./