PDA

View Full Version : حرفه ای: چطوری اطلاعات خاص یک صفحه اینترنتی رو بخونیم؟



Omid.R.A.Candy
جمعه 22 شهریور 1392, 00:41 صبح
سلام خدمت اساتید


بگذارید ساده تر سوالم رو مطرح کنم، همین صفحه ای که پیش روی شماست دارای یکسری تبلیغات و چیزهای عمومی هست و البته تاپیک و پاسخ های دوستان.

حالا ما با چه کد نویسی می تونیم اطلاعات همین صفحه رو بخونیم ؟ ( بطور مثال دستور بدیم برو سایت برنامه نویس فلان تاپیک رو باز کن و اطلاعات پاسخ 2 و 3 رو برامون بخون و به صورت رشته باز گردان؟

aliagamon
جمعه 22 شهریور 1392, 00:50 صبح
تو اون یکی تاپیک خلاصه توضبح دادم (دلیلشو همونجا گفتم)....

mohamad_torabi
جمعه 22 شهریور 1392, 00:53 صبح
تو اون یکی تاپیک خلاصه توضبح دادم (دلیلشو همونجا گفتم)....
تو کدوم تاپیک:لبخند:

Omid.R.A.Candy
جمعه 22 شهریور 1392, 01:30 صبح
تو اون یکی تاپیک خلاصه توضبح دادم (دلیلشو همونجا گفتم)....

اگر صلاح بدونید تو اینجا توضیح بدین ، چون توضیحات اون تاپیکم متوجه نشدم!

از اون گذشته سوال این تاپیک کلی تر و جامعتر از اون یکی هست.

aliagamon
جمعه 22 شهریور 1392, 12:18 عصر
در مورد فروم که شما میتونید اخرین پست هارو از طریق rss بدست بیارین...
اما برای فرستادن اطلاعات مثلا پر کردن یک تکست باکس (مثلا در سایت واژه یاب:http://www.vajehyab.com/)شما باید ابتدا با inspect element مرورگرتون ای دی اون ابجکت رو در بیاری (ابجکت در این مورد تکست باکسه)... برای مثال در سایت واژه یاب...ای دی اون تکست باکس میشه search که شما باید از این استفاده کنید ... خوب حالا شما به browser در برنامه خودتون ایجاد کنید ... و این وبسایت رو باز کنین ... حالا که سایت باز شد(ترجیها دستورات رو در رویداد web documentcoplete بنویسین چون اگه سایت کامل لود نشده باشه با خطا مواجه میشین...برای مثال ما میخوایم یه کلمه رو در این تکست باکس بنویسیم از این روش استفاده میکنیم...:

WebBrowser1.Document.GetElementById("search").SetAttribute("Value", "بهشت")

و برای کلیک بر روی یک دکمه از این استفاده میکنیم(دکمه یا لینک)...برای مثال دکمه ی سرچ در واژه یاب این ای دی رو داره:search_button_default

WebBrowser1.Document.GetElementById("search_button_default").InvokeMember("Click")

خوب تموم شد ...
حالا برای دریافت اطلاعات هم شما باید از htmlagility یا عبارات با قاعده استفاده کنید اینو خودتون برین دنبالش(اولی که کامپوننته خودش کلی مثال و نمونه داره دومی هم یه مورد خیلی پر کاربرد تو برنامه نویسیه کلی تاپیک و اموزش هست ازش)

Omid.R.A.Candy
جمعه 22 شهریور 1392, 13:30 عصر
در مورد فروم که شما میتونید اخرین پست هارو از طریق rss بدست بیارین...
اما برای فرستادن اطلاعات مثلا پر کردن یک تکست باکس (مثلا در سایت واژه یاب:http://www.vajehyab.com/)شما باید ابتدا با inspect element مرورگرتون ای دی اون ابجکت رو در بیاری (ابجکت در این مورد تکست باکسه)... برای مثال در سایت واژه یاب...ای دی اون تکست باکس میشه search که شما باید از این استفاده کنید ... خوب حالا شما به browser در برنامه خودتون ایجاد کنید ... و این وبسایت رو باز کنین ... حالا که سایت باز شد(ترجیها دستورات رو در رویداد web documentcoplete بنویسین چون اگه سایت کامل لود نشده باشه با خطا مواجه میشین...برای مثال ما میخوایم یه کلمه رو در این تکست باکس بنویسیم از این روش استفاده میکنیم...:

WebBrowser1.Document.GetElementById("search").SetAttribute("Value", "بهشت")

و برای کلیک بر روی یک دکمه از این استفاده میکنیم(دکمه یا لینک)...برای مثال دکمه ی سرچ در واژه یاب این ای دی رو داره:search_button_default

WebBrowser1.Document.GetElementById("search_button_default").InvokeMember("Click")

خوب تموم شد ...
حالا برای دریافت اطلاعات هم شما باید از htmlagility یا عبارات با قاعده استفاده کنید اینو خودتون برین دنبالش(اولی که کامپوننته خودش کلی مثال و نمونه داره دومی هم یه مورد خیلی پر کاربرد تو برنامه نویسیه کلی تاپیک و اموزش هست ازش)


ممنونم من از کد زیر استفاده کردم:

WebBrowser1.Document.GetElementById("search").SetAttribute("Value", "بهشت")


ولی خطا گرفت!


در ضمن من عبارت web documentcoplete رو ندیدم! کجاست؟

aliagamon
جمعه 22 شهریور 1392, 15:38 عصر
کد هایی که نوشتم هیچکدوم اسپیس(فاصله) نداره اینجا اشتباها (نمیدونم چرا) بینش فاصله افتاده اونو پاک کن درست میشه..
برای سوال دوم هم باید ابجکت وب بروزرتون رو انخاب کنید بعد از بخش Properties اون علامت رعد رو انتخاب کنید بعد روی عبارت مربوط دابل کلیک کنید ...(البته این کار با کدنویسی هم میتونید این کارو بکنین)....
110605
اون کد هایی رو که دادم در تابع ایجاد شده بنویس ... :چشمک:

Omid.R.A.Candy
جمعه 22 شهریور 1392, 18:12 عصر
کد هایی که نوشتم هیچکدوم اسپیس(فاصله) نداره اینجا اشتباها (نمیدونم چرا) بینش فاصله افتاده اونو پاک کن درست میشه..
برای سوال دوم هم باید ابجکت وب بروزرتون رو انخاب کنید بعد از بخش Properties اون علامت رعد رو انتخاب کنید بعد روی عبارت مربوط دابل کلیک کنید ...(البته این کار با کدنویسی هم میتونید این کارو بکنین)....
110605
اون کد هایی رو که دادم در تابع ایجاد شده بنویس ... :چشمک:


نه برا من هم بدون فاصله بود و ایراد گرفت ، ربطی به فاصله نداره.

110615

aliagamon
جمعه 22 شهریور 1392, 18:16 عصر
گفتم که تو دستورات رو تو webdocumentcomplete بنویسید...بعدش هم قبلش باید سایت رو با وب بروزر باز کنین چون در هرکدوم از حالت هایی که گفتم برنامه میگرده دنبال اون ابجکت و پیداش نمیکنه که کار بکنه ....

Omid.R.A.Candy
جمعه 22 شهریور 1392, 18:58 عصر
گفتم که تو دستورات رو تو webdocumentcomplete بنویسید...بعدش هم قبلش باید سایت رو با وب بروزر باز کنین چون در هرکدوم از حالت هایی که گفتم برنامه میگرده دنبال اون ابجکت و پیداش نمیکنه که کار بکنه ....

منظور شما از "توی" webdocumentcomplete همون رخداد میشه؟ اگه اونه پس چه جوری دستور رو اجرا کنم؟ چرا خدتون کد درستشو نمی نویسید؟

aliagamon
جمعه 22 شهریور 1392, 22:47 عصر
بله منضورم توی همون رخداد بوده...،همون دستور توی button رو بنویس چون دستورات توی این رویداد بعد از باز شدن سایت اجرا میشن....، اینم کد اما چیزی اضافه نکردم بهش خیلی هم خوبو شیک کار میکنه ... :

Private Sub WebBrowser1_DocumentCompleted(ByVal sender As System.Object, ByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEv entArgs) Handles WebBrowser1.DocumentCompleted
WebBrowser1.Document.GetElementById("search").SetAttribute("Value", "بهشت")
WebBrowser1.Document.GetElementById("headline").InvokeMember("Click")
End Sub

Omid.R.A.Candy
جمعه 22 شهریور 1392, 23:26 عصر
نمیشه این کد ها رو طوری نوشت تا نیازی به WebBrowser1_DocumentCompleted نباشه؟
یعنی یه کدی بنویسم که وقتی دکمه کلیک خورد بره سایت رو باز کنه، منتظر بشه تا کامل لود بشه بعد ادامه کد رو بنویسیم؟
در ضمن من این رو هم می خوام، و اون اینه که نمی خوام لود شدن سایت در وب بروز انجام بشه، بلکه می خوام مستقیم این کدها اجرا بشن.

aliagamon
شنبه 23 شهریور 1392, 00:40 صبح
یه همچین حلقه ای بزارین وسط کد ها(هرجا لازمه تا باز شدن کامل صبر بشه)

While webBrowser1.ReadyState <> WebBrowserReadyState.Complete


Application.DoEvents()
End While

ایده ابتکاری هست و ممکنه روش های بهتری داشته باشن دوستان
سوال اخر رو نفهمیدم یعنی اینکه ابزار web browser تو فرم نباشه؟
اگه اینه دوتا راه دارین یکی این که خاصیت visable اونو false کنین یکی هم اینه که با کد نویسی یه وب بروزر شبیه سازی کنین از کلاس اصلی