PDA

View Full Version : حرفه ای: دریافت اطلاعات از وب سایت خاص و نمایش آن و ارسال توسط کاربر



behrooz69
سه شنبه 29 مهر 1393, 15:29 عصر
سلام اساتید گرامی . این برنامه واسم خیلی مهمه پس لطفا همراهیم کنید .

ببینید من یه سایت خارجی دارم مثلا ثبت نام .

این سایت چند تا شی داره . حالا بهتون میگم این شی ها چی ان :

1 ) کمبو باکس که توش کشور ها رو انتخاب میکنیم.

2 ) بعد انتخاب کمبو باکس تکس باکس بعدی شماره تلفن هستش ( دقت کنید : اول باید کمبو باکس ایران انتخاب شه تا تکست باکس بعدی اولش +98 اضافه بشه و ما شماره رو 936.... وارد کنیم )

3 ) بعدش یه Option button هست که 4 تا لینکه خودش فعاله و نیاز به انتخاب نیست ( حالا فرض کنید که کاربر بخواد یکی رو انتخاب کنه .باید چه کنه )

4 ) توضیحات در مورد کاربر که باید حتما وارد شه .

5 ) در اخر یه Captcha کد هستش که باید وارد شه .


تا اینجاش رو که فهمیدین .

خوب من الان میخوام این اطلاعات رو توی فورم خودم داشته باشم .

1 ) توی فرمم یه کمبو باکس بزارم که کشور هارو توش فراخوانی کنم که کاربر انتخاب کنه . ( از سایت بگیرمش )
2 ) تکس باکس بذارم که شماره رو وارد کنه کاربر و به سایت ارسال کنم .
3 ) 4 تا Option Button بذارم و اطلاعات اون رو از سایت بخونم و کاربر انتخاب کنه اونو و به سایت ارسال کنم .
4 ) یه تکس باکس بذارم و توضیحات رو بنویسم و بفرستم به سایت .
5 ) یه Picture Box بذارم که اطلاعات رو از سایت بخونه و کاربر وارد کنه و به سایت ارسال کنم .

در اخر یه دکمه بذارم به اسم Send و بیام اطلاعات رو که کاربر وارد کرد رو به سایت ارسال و نتیجه رو توی فرم خودم ببینم .

(( خیلی واضح توضیح دادم نه ؟؟ میدونم خودم :لبخند: )))
توی سایت خیی گشتم ولی به در بسته خوردم . توی سایت های خارجی هم زیاد گشتم . از اساتید محترم درخواست کمک دارم .

بخصوص مهندس اشتیانی و مهندس Gilsoft .

ممنونتونم

behrooz69
سه شنبه 29 مهر 1393, 15:30 عصر
اگه یه Sample بنویسین ممنونتون میشم . این برنامه و اموزش فکر کنم خیلی نیاز میشه واسه کاربران .

yakooza2009
چهارشنبه 30 مهر 1393, 00:13 صبح
برای دریافت اطلاعات از سایتت باید اول براش وب سرویس بنویسی که اسامی همه کشور ها و از دیتابیس سایت بخونه و نمایش بده در قالب XML
بعد توی برنامه ویندوز فرمت وب سرویس و اضاف کنی و از اططلاعاتش استفاده کنی

behrooz69
چهارشنبه 30 مهر 1393, 00:16 صبح
منظورمو بد فهمیدی با set o get elemt ها میخوام کار کنم

behrooz69
پنج شنبه 01 آبان 1393, 00:26 صبح
یعنی کسی نیست ج بده ؟

Mani_rf
دوشنبه 05 آبان 1393, 09:52 صبح
سلام.
شما برای این کار نیاز دارید که یک شی وب بروزر روی فرم بگذارید و سایتی که میخواید توی اون اطلاعات رو وارد کنید رو لود کنید. اگر هم که نمیخواید کاربر سایت اصلی رو ببینه وب بروزر رو مخفی کنید.
از اینجا شما باید به نسبت سورس سایت شروع کنید به پیدا کردن تگ هایی که کنترل های مورد نظرت توی اون قرار دارن و پیمایش کردن تا رسیدن به کنترل ها. برای دیدن سورس سایت هم بهترین راه اینه که از فایرفاکس استفاده کنی و روی کنترلی که میخوای بهش برسی راست کلیک کنی و بعد Inspect Element رو بزنی. یک پنل باز میشه و میتونید تگی که مربوط به کنترل میشه رو ببینید.

http://barnamenevis.org/attachment.php?attachmentid=124999





از اینجا شروع میکنیم که فرض میکنیم سایت توی وب بروزر کاملا لود شده.
WebBrowser1.ReadyState=WebBrowserReadyState.Loaded
باید این کد رو توی یک اینتروال بندازی تو بفهمی که کی کامل لود شده و میتونی شروع به پیدا کردن کنترل ها کنی.


حالا به این کد ها نیاز داری :


برای پیدا یک تگ خاص با آی دی :
Dim t1 As HtmlElement = WebBrowser1.Document.GetElementById("ctl08_txtFullName")


برای پیدا کردن شی که آیدی نداره باید از اولین تگی که آیدی داره پیمایش کنی بیای پایین :



Dim t1 As HtmlElement = WebBrowser1.Document.GetElementById("contactform")
Dim t2 As HtmlElement = t1.GetElementsByTagName("tbody")(0).GetElementsByTagName("tr")(0).GetElementsByTagName("td")(0).GetElementsByTagName("input")(0)


توی همون عکس شی با آی دی contactform گرفته شده، تگ بعدی tbody، بعدی tr ، بعدی td و در آخر هم به input رسیدم.
عدد صفر که جلوی GetElementsByTagName و نام تگ میبینی هم به این دلیل هست که زیر هر تگ میتونه مجموعه ای از تگ ها وجود داشته باشه برای همین GetElementsByTagName به شما یک آرایه از HtmlElement برمیگردونه که باید بگی به کدوم زیر مجموعه اشاره میکنی.
مثلا اگر بخوام توی tr سومی دونبال یک input بگردم کد به این شکل میشه :

Dim t1 As HtmlElement = WebBrowser1.Document.GetElementById("contactform")
Dim t2 As HtmlElement = t1.GetElementsByTagName("tbody")(0).GetElementsByTagName("tr")(2).GetElementsByTagName("td")(0).GetElementsByTagName("input")(0)


تا اینجا تونستی به تگ های مورد نظر برسی.


برای گرفتن مقدار درون یک شی باید از طریق GetAttribute و اشاره به Attributeی که مقدار توش هست اقدام کنی. برای مثال برای اگر مقدار همون input قبلی رو میخوای بگیری از این کد استفاده کن :



Dim t1 As HtmlElement = WebBrowser1.Document.GetElementById("contactform")
Dim t2 As HtmlElement = t1.GetElementsByTagName("tbody")(0).GetElementsByTagName("tr")(2).GetElementsByTagName("td")(0).GetElementsByTagName("input")(0)
Dim s1 As String = t2.GetAttribute("value")



اگر هم که میخوای مقداری ست کنی خب طبیعتا از :



Dim t1 As HtmlElement = WebBrowser1.Document.GetElementById("contactform")
Dim t2 As HtmlElement = t1.GetElementsByTagName("tbody")(0).GetElementsByTagName("tr")(2).GetElementsByTagName("td")(0).GetElementsByTagName("input")(0)
t2.SetAttribute("value", "Test Text")



با این 2تا متد میتونی کلا همه خواص یگ ها رو بگیری و یا ست کنی.در نتیجه واضحه که اگر میخوای مسیر یک عکس رو بخونی باید خاصیت src رو بخونی.


برای اجرا کردن یک رویداد (Event) روی یک تگ هم بیاد نام رویداد رو به متد InvokeMember بفرستی :



Dim t1 As HtmlElement = WebBrowser1.Document.GetElementById("contactform")
Dim t2 As HtmlElement = t1.GetElementsByTagName("tbody")(0).GetElementsByTagName("tr")(2).GetElementsByTagName("td")(0).GetElementsByTagName("input")(0)
t2.InvokeMember("click")



با همین کد ها تقریبا میتونی هر کاری که میخوای توی یک وبسایت انجام بدی.
امیدوارم کاری که میخوای رو بتونی با این کد ها انجام بدی

behrooz69
سه شنبه 06 آبان 1393, 02:10 صبح
ممنون از توضیح خوبت . اون سایتی که پ.خ کردم رو در نظر بگیر خوب ؟

حالا چندتا سوال : اول که واسه عکس اومدم از src استفاده کردم ولی catpcha رو اصلا نتونسم توی picturebox نشون بدم .

دوم اینکه توی اون سایت چیزی توی مقادیر وارد نشده فقط من باید وارد کنم .

یعنی میخوام توی تکس باکس من وارد بشه توی سایت خونده شه .

بعضی جاهاشو با تست و اینا فهمیدم ولی اونجاشو نفهمیدم که گفتی اگه تگ المنت نداشته باشه چجوری بگیریمش . بیشتر توضیح میدی ؟؟

اگه اون سایتی که واست فرستادم رو یه Sample بذاری خیلی ممنونت میشم .

چون همه نوع توش داره .

تکس باکس .

لیست باکس

اپشن ها

مولتی لاین تکس

و از همه مهم تر کد امنیتی یا کپتچا کد . که واسه گرفتن و نمایشش توی picturebox خداشاهده 5 روزه دارم میگردم ولی هیچجا سورس خوبی که کار کنه پیدا نشد . حتی Msdn

با سورس مثال بزنید کاملا مفهومی تره . هرچند اینطوری بچه ها بیشتر متوجه میشن. یا علی