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

نسخة كاملة : كل ما يخص HtmlAgilityPack
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
الصفحات : 1 2 3 4 5 6
(02-09-17, 05:43 PM)سعود كتب : [ -> ]
إقتباس :
مع ان هذا ليس ما اريده 
الصراحة الموضوع هذا(موضوع التاخير) عجزت افهمهSmile
.
.
.
اذكر لنا فكرة معينة :لعبة  خدعةSmile  اي شيء المهم يحتاج تطبيقها فكرة التاخير لعلني  او غيري يتمكن من فهم  المقصود الذي لم اتمكن من فهمه منذ البداية بدليل انك لم تحصل على الجواب.
.
.
موضوعنا الاصلي فلنؤخره قليلا.

سافترض شيئا.
انك تود  عمل شيء معين  مثلا تغيير لون نص بعد مدة 3 ثواني.
هل هذا وارد بالفكرة لديك؟

ولا يهمك حبيبى...

بص انا هاقولك مقصدى..
مثلا انا هاستعمل اداة ويب براوزر واريد من الزر ان يقوم اولا مايلى:-
إدخال رابط فيديو فى موقع مثلا لتحميل الفيديوهات فحينما يتم تجهيز الرابط المباشر للفيديو
يأخذ حاولى 7 ثوانى فأقول للبرنامج مثلا انتظر 10 ثوانى وبعدها أجلب صورة الفيديو وينتظر 5 ثوانى
ثم يقوم بالتحميل....
مثال لما قولته.

PHP كود :
 'جلب الصورة
        Dim allB As HtmlElementCollection = WebBrowser1.Document.GetElementsByTagName("img")
        For Each bt As HtmlElement In allB
            If bt.GetAttribute("className") = "thumb" Then
                PictureBox2.ImageLocation = bt.GetAttribute("src")
                Exit For
            End If
        Next
        '
انتظار 4 ثوانى
        Await Task
.Delay(2000)

 
       'جلب الروابط

        Dim inputs As HtmlElementCollection
        inputs = WebBrowser1.Document.GetElementsByTagName("a")
        For Each item As HtmlElement In inputs
            If item.GetAttribute("href").Contains("videoplayback") Then
                CheckedListBox1.Items.Add(item.GetAttribute("href").ToString)
            End If
        Next item
        '
Label1.Text "  عدد السور    " ListBox1.Items.Count
        
'انتظار ثانيتين
        Await Task.Delay(2000)
        '
جلب الاسم
        Dim allBtn 
As HtmlElementCollection WebBrowser1.Document.GetElementsByTagName("div")
 
       For Each bt As HtmlElement In allBtn
            If bt
.GetAttribute("className") = "meta" Then
                TextBox2
.Text bt.InnerText
وهلم جرا
.......... 
جرب هذا الكود اخى الذى كتبته انت من دقائق "  
كود :
 Thread.sleep(100)

وانظر ماذا سيحدث فهو اولا يجعل البرنامج يهنج والأهم انه لا ينتظر فى كل أمر

بل يدمج كل ال sleep مع بعضهم أى ينتظر مرة واحدة ثم ينفذ كل الكود مرة واحدة ايضا...
وانا بالفعل ذكرت لك المشكلة حينما قولت 
إقتباس :
اخى سعود هل هناك بديل ال (Async) Await Task.Delay ؟؟؟

بحيث أنفذ أوامر على مراحل أحددها أنا ؟ فهويؤدى الغرض بالفعل لكن
انا أريد استبدالة بطريقة أخرى تعمل على الفيجوال 2010 لآن ال 2012 يسبب لى بعض ثقل فى الجهاز

أما بالنسبة لجوابك هذا 
إقتباس :
استخدام الباكقرواند وركر اسهل لانه يحتوي على ثلاث

فلم أفهمه أو  إن شئت فقل مش هاعرف أعملها للأسف فلو تعرف انت تنفذها على الكود الذى كتبته او اى كود اخر 
يبقى انت كدة حليت لى مشكلة عويصة
(02-09-17, 07:13 PM)سعود كتب : [ -> ]بصراحة لم افهم التعامل مع الويب براوزر على نحو الكود الذي كتبته انت لكن.
الاخ ابو ليلى الم تذكر انه فعل المطلوب في سؤال لك سابق؟

ادرس ماذكرته لك باشياء بسيطة وبعدها طبق ماتراه مناسبا.

لا لم يذكر لى احد هذا الحل وانا ارى ان الموضوع انخرط بعيدا عن موضوعنا الاصلى وانا السبب طبعا فعذراً..
ايه رأيك نحذف كل التعليقات السابقة التى تخص هذا السؤال ليكون موضوعنا اساسى لا يحيد عن ال HtmlAgilityPack ؟؟
(02-09-17, 07:31 PM)سعود كتب : [ -> ]طيب لا عليك من موضوع التعليقات.
المهم اللي ارجوه انك تحاول قدر المستطاع فهم الباكقراوند
حاليا اصمم مثال يحتوي على 3 باكقراوند كل واحد له مهمة
جاري العمل على المثال.

تمام حبيبى ربنا يكرمك..... احب الشخص المتحمس ذو الهمة العالية
ده اللى قدرت اعمله حاجة بسيطة عارف بس ماشى الحال
(03-09-17, 12:56 AM)سعود كتب : [ -> ]
(03-09-17, 12:11 AM)ابو روضة كتب : [ -> ]
ده اللى قدرت اعمله حاجة بسيطة عارف بس ماشى الحال

جاري الاطلاع عليه

لفت انتباهي شي بالمثال
ما الداعي من هذا


كماهو مبين بالصورة؟

الصراحة ماعمري اشتغلت بـAsync  ولا  Delay ولا حسيت اني بحاجتها.

لكن الكود بحدث اللود غير محبذ
        Control.CheckForIllegalCrossThreadCalls = False

شوف التعديل
كود :
Public Class Form1
   Private Sub lbl(ByVal l As String)
       If Label1.InvokeRequired Then
           Label1.Invoke(New Action(Of String)(AddressOf lbl), l)
       Else
           Label1.Text = l
       End If
   End Sub
   Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
       Me.ProgressBar1.Maximum = 100
       If Me.BackgroundWorker1.IsBusy = False Then
           BackgroundWorker1.RunWorkerAsync()
       End If
   End Sub

   Private Sub BackgroundWorker1_DoWork(sender As Object, e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
       For i = 0 To 100
           If Me.BackgroundWorker1.CancellationPending Then Exit For : Exit Sub
           lbl(i)
           BackgroundWorker1.ReportProgress(i)
           System.Threading.Thread.Sleep(200)
       Next

   End Sub



   Private Sub BackgroundWorker1_ProgressChanged(sender As Object, e As System.ComponentModel.ProgressChangedEventArgs) Handles BackgroundWorker1.ProgressChanged
       ProgressBar1.Value = e.ProgressPercentage
   End Sub

   Private Sub BackgroundWorker1_RunWorkerCompleted(sender As Object, e As System.ComponentModel.RunWorkerCompletedEventArgs) Handles BackgroundWorker1.RunWorkerCompleted
       lbl("خلاص يا عم سعود ههههههه")
   End Sub

   Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
       BackgroundWorker1.CancelAsync()
   End Sub
End Class

المرفق معدل

تمام اخى دعك بقى من كل هذا ونرجع لموضوعنا الاساسى....
الرابط اللى قولت لك عليه جلبته لكن بالويب براوزر وانا حابب فعلا اتاعمل مع HtmlAgilityPack 
لانى احببتها جدا والفضل لله اولا ثم انت
(03-09-17, 04:12 AM)سعود كتب : [ -> ]ايش كان غرضك من الويب براوزر؟
هل هو التعامل مع نقرات الازرار؟؟؟
ان كان نعم فلا غنى عنها مع جهلي بها وعدم تجربتها من قبل.
لان  الـHtmlAgilityPack فقط تحليل صفحات و اظهار نتائج.
الموضوع كلو زي بعضو يعني سواء ناقشنا موضوع HtmlAgilityPack او موضوع  Backgroundworker  فكلا الامرين مرتبطان ببعضهما.
خصوصا لو اردنا البعد عن التهنيق وقد  نحتاج الويب براوزر لكن من دون نافذة لاقتناص مالم نتمكن من اقتناصه بغيرها.

يعنى مثلا حاولت اجيب الرابط بهذا الكود لكن بجيب خطأ لكن لما بجيب النص بجيبوا عادى

 Dim url As String = "http://live.cima4u.tv/Video/Bambi II  2006 -10499.html"
        Dim hWeb As HtmlAgilityPack.HtmlWeb = New HtmlAgilityPack.HtmlWeb
        Dim doc As HtmlAgilityPack.HtmlDocument = hWeb.Load(url, "GET")
        Dim node As HtmlAgilityPack.HtmlNode = doc.DocumentNode.SelectNodes("/html/body/div[4]/div/div[3]")(0)
        'ListBox1.Items.Add(node.Attributes("href").Value)
        TextBox1.Text = node.InnerText
الخطأ هنا

'ListBox1.Items.Add(node.Attributes("href").Value
الحمدلله جلبته بهذا الكود بعد المحاولات

PHP كود :
Dim url As String "http://live.cima4u.tv/Video/Bambi II  2006 -10499.html"
 
       Dim hWeb As HtmlAgilityPack.HtmlWeb = New HtmlAgilityPack.HtmlWeb
        Dim doc 
As HtmlAgilityPack.HtmlDocument hWeb.Load(url"GET")
 
       Dim node As HtmlAgilityPack.HtmlNode doc.DocumentNode.SelectNodes("/html/body/div[4]/div/div[3]/div/a")(0)
 
       TextBox1.Text = (node.Attributes("href").Value
جلب هذا
http://upbom.com/5vufbv15o1eo/CR005.Bambi_II_[2006]_1080p_Arabic.Cima4U.mkv.html
طيب هل رابط مباشر؟
لم الحظ ذلك.
هل تريد مشاهدة الفيديو ام ماذا
(03-09-17, 05:08 AM)سعود كتب : [ -> ]طيب هل رابط مباشر؟
لم الحظ ذلك.
هل تريد مشاهدة الفيديو  ام ماذا

للأسف مش مباشر.....
انا لا اريد شيئ من الفيديو لكنى احببت فعلا ال HtmlAgilityPack وبحاول
 أعمل برنامج تحميل بها بالاستعانة بالويب براوزر
لكن لا اريد اى شيئ من اى رابط من كل هذا...
الصفحات : 1 2 3 4 5 6