PDA

View Full Version : حرفه ای: دریافت قسمتی از متن یک صفحه اینترنتی در یک Textbox



karem2074
جمعه 02 تیر 1391, 14:46 عصر
با سلام
دوستان من میخوام قسمتی از متن یک صفحه اینترنتی رو در یک Textbox بارگذاری کنم ,طوری که کدهاش هم به همراهش بارگذاری نشه!! منظورم اینکه به صورت زیر نباشه:

<a href="http://www.Google.com>Google</a>
میخوام فقط متن Google رو تو تکست باکس نشون بده.
درست این تصویر که براتون گذاشتم رو میخوام.همون که با فلش مشخص کردم رو میخوام تو Textbox بارگذاری کنم.

88603

karem2074
شنبه 03 تیر 1391, 16:28 عصر
کسی نبود کمک کنه؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟

koorosh-soft
شنبه 03 تیر 1391, 21:19 عصر
اول و آخر رشته رو که داشته باشی میتونی جدا کنی !
یک DLL هم برای انجام اینکار هست ! اسمش رو نگاه می کنم بعد میگم !

مهرداد صفا
سه شنبه 27 تیر 1391, 06:17 صبح
با سلام
بعد از این که با WebBrowser نویگیت کردیم به صفحه منظور حالا باید بدانیم که چه چیزی را میخواهیم به دست بیاوریم مثلا سومین لینک یا دومین هدر.
برای مثال اولین هدر لول 3 از سایت یاهو که مثلا یک خبر است و من میخواهم در فرمم نمایش بدم.
...




'in the name of god
' صل الله علی محمد و آله
Public Class Form1
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
WebBrowser1.Visible = False
WebBrowser1.Navigate("www.yahoo.com")
End Sub

''صبر کنیم تا صفحه کاملا باز شود
Private Sub WebBrowser1_DocumentCompleted(ByVal sender As Object, ByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEv entArgs) Handles WebBrowser1.DocumentCompleted
Dim header As HtmlElement = WebBrowser1.Document.GetElementsByTagName("h3")(0)
TextBox1.Text = (header.InnerText)
End Sub
End Class

karem2074
سه شنبه 27 تیر 1391, 11:53 صبح
دستت دردنکنه دوست عزیز همونی هست که میخوام.اما یک مشکل من میخوام این کد رو دریافت کنه:

<div style="display: block;" id="statusresult">
<p class="ymid">fara.design</p>
<p> is</p>
<p id="status">offline</p>
</div>

یعنی در کل میخوام محتویات تگ statusresult که میشه fara.design is offline رو در textbox نشون بده.واسه تگ h3 خیلی راحت میشه اما در مورد این تگ نمیدونم چرا نمیشه.ممنون میشم کمک کنین

مهرداد صفا
چهارشنبه 28 تیر 1391, 00:18 صبح
دستت دردنکنه دوست عزیز همونی هست که میخوام.اما یک مشکل من میخوام این کد رو دریافت کنه:

<div style="display: block;" id="statusresult">
<p class="ymid">fara.design</p>
<p> is</p>
<p id="status">offline</p>
</div>

یعنی در کل میخوام محتویات تگ statusresult که میشه fara.design is offline رو در textbox نشون بده.واسه تگ h3 خیلی راحت میشه اما در مورد این تگ نمیدونم چرا نمیشه.ممنون میشم کمک کنین



سلام
شکل کلی کار به همون صورت است ولی در این حالت میتوان از متود GetElementById استفاده کرد یا تمام element های گرفته شده با GetElementByTagName را در حلقه ای چک کرد و مقدار id مورد نظر را انتخاب کرد. میتوانید این قسمت را در کد بالا تغییر بدهید.




Private Sub WebBrowser1_DocumentCompleted(ByVal sender As Object, ByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEv entArgs) Handles WebBrowser1.DocumentCompleted
Dim div As HtmlElement = WebBrowser1.Document.GetElementById("statusresult")
TextBox1.Text = (div.InnerText)
End Sub

karem2074
چهارشنبه 28 تیر 1391, 00:58 صبح
خیلی ممنونم اما کد ارور میده.ارور هم عکس گرفتم میتونید نگاه کنید


http://p30up.ir/up/9pcejphpmysaj6od066.png

مهرداد صفا
چهارشنبه 28 تیر 1391, 02:15 صبح
سلام
در این مورد چون وبسایت تقریبا پویا طراحی شده تعداد element ها در هر بار ممکن است متفاوت باشد. همچنین statusresult در ابتدای load شدن صفحه مقدار مورد نظر را ندارد پس باید کمی صبر کرد برای این کار میتوان از timer استفاده کرد یا از طریق زیر عمل کرد. 'in the name of god

Public Class Form1
Dim yahooId As String = "safa_mehrdad@ymail.com"
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
WebBrowser1.Visible = False
WebBrowser1.Navigate("http://www.imvisible.info/?yid=" & yahooId)
End Sub
''صبر کنیم تا صفحه کاملا باز شود
Private Sub WebBrowser1_DocumentCompleted(ByVal sender As Object, ByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEv entArgs) Handles WebBrowser1.DocumentCompleted

MsgBox(WebBrowser1.Document.GetElementById("statusresult").InnerText)
'مقدار مورد نظر ما نیست
'صبر میکنیم تا صفحه آپدیت شود
Dim ShortId = yahooId.Substring(0, yahooId.IndexOf("@"))
Dim checking As Boolean = True
While checking
Application.DoEvents()
If InStr(WebBrowser1.Document.GetElementById("statusresult").InnerText, ShortId) > 0 Then
Me.Text = (WebBrowser1.Document.GetElementById("statusresult").InnerText)
checking = False
End If
End While
End Sub
End Class

karem2074
پنج شنبه 29 تیر 1391, 04:45 صبح
سلام
در این مورد چون وبسایت تقریبا پویا طراحی شده تعداد element ها در هر بار ممکن است متفاوت باشد. همچنین statusresult در ابتدای load شدن صفحه مقدار مورد نظر را ندارد پس باید کمی صبر کرد برای این کار میتوان از timer استفاده کرد یا از طریق زیر عمل کرد.'in the name of god

PublicClass Form1
Dim yahooId AsString = "safa_mehrdad@ymail.com"
PrivateSub Form1_Load(ByVal sender AsObject, ByVal e As System.EventArgs) HandlesMe.Load
WebBrowser1.Visible = False
WebBrowser1.Navigate("http://www.imvisible.info/?yid=" & yahooId)
EndSub
''صبرکنیمتاصفحهکاملابازشود
PrivateSub WebBrowser1_DocumentCompleted(ByVal sender AsObject, ByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEv entArgs) Handles WebBrowser1.DocumentCompleted

MsgBox(WebBrowser1.Document.GetElementById("statusresult").InnerText)
'مقدارموردنظرمانیست
'صبرمیکنیمتاصفحهآپدیتشود
Dim ShortId = yahooId.Substring(0, yahooId.IndexOf("@"))
Dim checking AsBoolean = True
While checking
Application.DoEvents()
If InStr(WebBrowser1.Document.GetElementById("statusresult").InnerText, ShortId) > 0 Then
Me.Text = (WebBrowser1.Document.GetElementById("statusresult").InnerText)
checking = False
EndIf
EndWhile
EndSub
EndClass


ممنونم دوست گرامی.اما یک مشکل وجود داره!! من نمیخوام به صورت پیغام نمایش داده بشه, میخوام تو textbox1 برای چاپ کنه.تازه اگه به صورت پیغام نمایش میده بعد از ok کردن پیغام,پروژه ارور میده که تو عکس براتون نمایش دادم.


http://p30up.ir/up/ai3j4h5jee466vquak5b.png

مهرداد صفا
جمعه 30 تیر 1391, 22:33 عصر
سلام
شما میتوانید جعبه پیغام را از کد حذف کنید یعنی در واقع نیازی به وجودش نیست محتویات تگ مورد نظر در نوار عنوان فرم نمایش داده میشود که شما میتوانید بر حسب نیاز خود مثلا در textbox نمایش دهید کافیست به جای me.text بنویسید textbox1.text

موفق باشید.

مهرداد صفا
سه شنبه 03 مرداد 1391, 00:11 صبح
سلام
در مورد script error dialog هم، این اخطار مربوط به خطای script های صفحه وب میباشد که شما میتوانید نمایش این اخطار ها را با تغییر خصوصیت WebBrowser.ScriptErrorsSupPressed به true متوقف کنید.
موفق باشید.