منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : استخراج نص من webbrowser ووضعه بrichtextbox
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
مرحبا 
بدي طريقة من خلالها استطيع عمل بحث في هذه الصفحة على سؤال معين 
واذا كان السؤال موجود يقوم بعرض السؤال والخيارات مع الاجابة(Answe) في richtextbox
https://arabi.123.st/h6-page
https://arabi.123.st/h5-page

الادوات :
textbox for question 
button for share 
webbrowser for search in web site 

rictextbox for show the rusalt 
كود :
If WebBrowser1.DocumentText.Contains(TextBox1.Text) Then
       '        Dim src = WebBrowser1.DocumentText
       '        Label1.Text = "تم العثور على النص المطلوب!"
       '        RichTextBox1.Text = WebBrowser1.Document.Body.OuterText
       '        Dim mts = Regex.Matches(src, "<p>\d+.<br>.+?<p>Answer:\s\w</p>", RegexOptions.Singleline)
       '        Dim qc = mts.Count, ca = 0
       '        For Each mt As Match In mts
       '            If mt.Value.Contains(TextBox1.Text) = True Then
       '                RichTextBox1.Clear()
       '                Dim question = Regex.Replace(mt.Value, "<.*>", "").Trim
       '                Dim answer = Regex.Match(mt.Value, "<p>Answer:\s(\w)</p>").Groups(1).Value
       '                RichTextBox1.Text += question & vbNewLine & "Answer: " & answer

       '                RichTextBox1.Find("Answer: ", RichTextBoxFinds.MatchCase) 'text to colorize / change font  
       '                'test - change font / color  
       '                RichTextBox1.SelectionFont = New Font("Verdana", 12, FontStyle.Bold)
       '                RichTextBox1.SelectionColor = Color.Red
       '            End If
       '        Next



هذا كود ولكن بحاجة لتعديل الRegexPattren
وللاسف ليست لدي اي خبره بالريجكس
000000000000
اهلا اخي هذه تجربة لك
RichTextBox1.Text = WebBrowser1.Document.GetElementById("Add ID ").InnerText

عندك مثال (Add ID)

تقوم بوضع الايدي للموقع الذي تريد سحب الكلام منه ..

وهنا تضع هذا اكود لكي يسحبه في نص التيكست

If TextBox1.Text.Contains("here") Then
وتقوم بتبديل كلمة here الئ النص المطلوب لك
اتنمئ عجبك الرد
(02-11-20, 05:07 AM)Master Hacker كتب : [ -> ]اهلا اخي هذه تجربة لك
RichTextBox1.Text = WebBrowser1.Document.GetElementById("Add ID ").InnerText

عندك مثال (Add ID)

تقوم بوضع الايدي للموقع الذي تريد سحب الكلام منه ..

وهنا تضع هذا اكود لكي يسحبه في نص التيكست

If TextBox1.Text.Contains("here") Then
وتقوم بتبديل كلمة here الئ النص المطلوب لك
اتنمئ عجبك الرد

تمام شكرا لك 
بس النصوص ما الها id
بما أنه لا يملك أى دى فممكن هنا من خلال الكلاس التابع للتاج نيم


كود :
 Dim input As HtmlElementCollection
        input = WebBrowser1.Document.GetElementsByTagName("a")
        For Each item As HtmlElement In input
            If item.GetAttribute("className").Contains("Text") Then
                
RichTextBox1.Text = item.GetAttribute("href")
            End If
        Next item
مثال جاهز بالكود الذي وضعته
السلام عليكم ورحمة الله و بركاته
اشكر كل الاخوة اللذين سبقوني.
لدي استفسار للسائل الكريم...
هل الصفحة من تصميمك؟
لاني جهزت مثال وتوقفت عند نقطة احاول فيها ثم تفاجات ان المثال كليا لا يعمل ولما اطلعت على الصفحة رايتها تغيرت بنيتها.
اذا كنت تريد تصميم جيد بحيث يمكنك استخلاص معلومات جيدة فاستخدم تصميم xml  او  html  او على الاقل تضع مفاتيح وقيم لكي تضبط الامور معك سواء عن طريق webbrowser او عن طريق regex  او  HtmlAgilityPack
كود :
 If WebBrowser1.Document.Body.InnerText.Contains(TextBox1.Text) Then
           For Each ss In WebBrowser1.Document.GetElementsByTagName("p")
               For i = 0 To 767
                   If ss.GetAttribute("id") = "Q" & i Then
                       TextBox2.Text = ss.innertext
                       If TextBox2.Text.Contains(TextBox1.Text) Then
                           RichTextBox1.Text = ss.innertext
                           Label1.Text = "تم العثور على جواب"
                     
                           Label1.ForeColor = Color.Green
                           RichTextBox1.Text = TextBox2.Text.Replace("a. ", vbNewLine & "a. ").Replace("b. ", vbNewLine & "b. ").Replace("c. ", vbNewLine & "c. ").Replace("d. ", vbNewLine & "d. ").Replace("e. ", vbNewLine & "e. ").Replace("Answer: ", vbNewLine & "Answer: ")
                           RichTextBox1.Find("Answer: ", RichTextBoxFinds.MatchCase) 'text to colorize / change font  
                           RichTextBox1.SelectionFont = New Font("Verdana", 12, FontStyle.Bold)
                           RichTextBox1.SelectionColor = Color.Red
                           RichTextBox1.Find(TextBox1.Text, RichTextBoxFinds.MatchCase) 'text to colorize / change font  
                           'test - change font / color  
                           RichTextBox1.SelectionFont = New Font("Verdana", 12, FontStyle.Bold)
                           RichTextBox1.SelectionColor = Color.Green

                         
                       ElseIf Not RichTextBox1.Text.Contains(TextBox1.Text) Then
                           Label1.Text = "لم يتم العثور على جواب"
                           Label1.ForeColor = Color.Red
                       End If
                   End If
               Next
           Next

       Else
           Try
               ListBox1.SelectedIndex += 1
           Catch ex As Exception
               ListBox1.SelectedIndex -= 1
           End Try
 شكرا لكم ما قصرتو وهي طلع معي الكود النهائي بهاذ الشكل
السلام عليكم اخي باسل
عندي فورم رقم 1 علية ويب براوزر و بوتون افتح من خلاله صفحة انترنت معينه يوجد بها معلومات اريد سحب بعض المعلومات من هذه الصفحة عن طريق البوتون ووضعها في فورم رقم 2 في التكست بوكس
فهل تستطيع مساعدتي اكن شاكرا لك .....