تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
استخراج نص من webbrowser ووضعه بrichtextbox
#1
مرحبا 
بدي طريقة من خلالها استطيع عمل بحث في هذه الصفحة على سؤال معين 
واذا كان السؤال موجود يقوم بعرض السؤال والخيارات مع الاجابة(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
وللاسف ليست لدي اي خبره بالريجكس
Basil Abdallah 

الرد
تم الشكر بواسطة: bidaya
#2
000000000000
Basil Abdallah 

الرد
تم الشكر بواسطة:
#3
اهلا اخي هذه تجربة لك
RichTextBox1.Text = WebBrowser1.Document.GetElementById("Add ID ").InnerText

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

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

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

If TextBox1.Text.Contains("here") Then
وتقوم بتبديل كلمة here الئ النص المطلوب لك
اتنمئ عجبك الرد
الرد
تم الشكر بواسطة: سعود , bidaya , Basil Abdallah , Basil Abdallah
#4
(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
Basil Abdallah 

الرد
تم الشكر بواسطة: bidaya
#5
بما أنه لا يملك أى دى فممكن هنا من خلال الكلاس التابع للتاج نيم


كود :
 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
الرد
تم الشكر بواسطة: سعود , bidaya , bidaya , Basil Abdallah
#6
مثال جاهز بالكود الذي وضعته


الملفات المرفقة
.rar   Basil Abdallah.rar (الحجم : 33.42 ك ب / التحميلات : 9)
الرد
تم الشكر بواسطة: ابو روضة , سعود
#7
السلام عليكم ورحمة الله و بركاته
اشكر كل الاخوة اللذين سبقوني.
لدي استفسار للسائل الكريم...
هل الصفحة من تصميمك؟
لاني جهزت مثال وتوقفت عند نقطة احاول فيها ثم تفاجات ان المثال كليا لا يعمل ولما اطلعت على الصفحة رايتها تغيرت بنيتها.
اذا كنت تريد تصميم جيد بحيث يمكنك استخلاص معلومات جيدة فاستخدم تصميم xml  او  html  او على الاقل تضع مفاتيح وقيم لكي تضبط الامور معك سواء عن طريق webbrowser او عن طريق regex  او  HtmlAgilityPack
الرد
تم الشكر بواسطة: ابو روضة , Anas Mahmoud , bidaya
#8
كود :
 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
 شكرا لكم ما قصرتو وهي طلع معي الكود النهائي بهاذ الشكل
Basil Abdallah 

الرد
تم الشكر بواسطة:



التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم