منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب
اقتناص الروابط بمجرد ظهورها - نسخة قابلة للطباعة

+- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb)
+-- قسم : قسم لغة الفيجوال بيسك VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=182)
+--- قسم : قسم اسئلة VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=183)
+--- الموضوع : اقتناص الروابط بمجرد ظهورها (/showthread.php?tid=26136)

الصفحات: 1 2


اقتناص الروابط بمجرد ظهورها - ابو روضة - 16-08-18

السلام عليكم ورحمة الله وبركاته
اخوتى انا حاطط اكواد داخل اداة الويب براوزر وحاطط فى الزر الذهاب للموقع المراد اقتناص 
الروابط منه لكن حينما يذهب الى الموقع ويحط الرابط ويجلب الروابط وكله تمام الويب براوزر
بيفضل يقتنص الروابط ويفضل يقتنصها الى مالا نهاية مع انى حاطط شرط ولما بحط الاكواد داخل الزر مباشرة بعطى
له وقت كبير الى ما يذهب للرابط ثم يضع الرابط وينتظر ظهور الروابط ثم يقتنصها...
وانا اريد لما اضغط على الذر يذهب الى الموقع ويقوم بتنفيذ الاوامر التى اعطيته له وحين يجد
الروابط يقتنصها مباشرة دون زيادة او نقصان...
وهذا هو الكود وهو شغال كويس على فكرة ولا به اى مشاكل المشكلة فقط اننى لو حطيت هذا الكود
فى الزر سيأخذ وقت كبير جدا ولما بضعه داخل الويب براوزر بيقتنص الروابط لعدد مالا نهاية يقتنصها ويعيد مرات ومرات


PHP كود :
هذا الكود بضعه فى الزر

  WebBrowser1
.Navigate("http://www.downvids.net/download-youtube-channel-videos")
     
        Await Task
.Delay(10000)


 
WebBrowser1.Document.GetElementById("home_search_q").InnerText TextBox1.Text
        WebBrowser1
.Document.GetElementById("home_search_submit").InvokeMember("Click")

وهذا داخل الويب براوزر

        Await Task
.Delay(30000)

 
       Dim input As HtmlElementCollection
        input 
WebBrowser1.Document.GetElementsByTagName("a")
 
       For Each item As HtmlElement In input
            If item
.InnerText = ("Download as video"Then
                lis
.Add(item.GetAttribute("href"))
 
           End If
 
       Next item
        Dim ss 
As HtmlElementCollection
        ss 
WebBrowser1.Document.GetElementsByTagName("span")
 
       For Each item As HtmlElement In ss
            If item
.GetAttribute("Id").Contains("msgtxt3567146535"Then
                Do
                    ListBox1
.Items.Add(item.InnerText)
 
                   If item.GetAttribute("Id").Contains("msgtxt3567146535"Then
                        Exit 
Do
 
                   End If
 
               Loop
                Label2
.Text "عدد الفيديوهات ......." ListBox1.Items.Count

            End 
If
 
       Next item 



RE: اقتناص الروابط بمجر ظهورها - elgokr - 17-08-18

وعليكم السلام ورحمة الله وبركاته

السبب فى التكرار اللا نهائي هو هذا الجزء لاستخدام Do
كود :
               Do
                   ListBox1.Items.Add(item.InnerText)
                   If item.GetAttribute("Id").Contains("msgtxt3567146535") Then
                       Exit Do
                   End If
               Loop

قم باستبداله بهذا الكود
كود :
ListBox1.Items.Add(item.InnerText)

وان شاء الله سيعمل دون الحاجة لباقى كود الـ Do والتحقق

تحياتى لك
وتمنياتى لك التوفيق



RE: اقتناص الروابط بمجر ظهورها - ابو روضة - 17-08-18

(17-08-18, 03:08 AM)elgokr كتب :
وعليكم السلام ورحمة الله وبركاته

السبب فى التكرار اللا نهائي هو هذا الجزء لاستخدام Do
كود :
               Do
                   ListBox1.Items.Add(item.InnerText)
                   If item.GetAttribute("Id").Contains("msgtxt3567146535") Then
                       Exit Do
                   End If
               Loop

قم باستبداله بهذا الكود
كود :
ListBox1.Items.Add(item.InnerText)

وان شاء الله سيعمل دون الحاجة لباقى كود الـ Do والتحقق

تحياتى لك
وتمنياتى لك التوفيق

للأسف أخى الجوكر تكررت أكثر وأكثر وصدقنى بحاول فيها كتير



RE: اقتناص الروابط بمجرد ظهورها - elgokr - 17-08-18

فى البداية انا لا يمكننى اختبار نتائج الكود
بسبب ان الموقع المشتخدم لا يعمل لدى بصورة جيدة 
ولا اعلم مصدر خطاء الموقع داخل المشروع قد يكون بسبب الجافا و المتصفح

لذلك قمت بعمل تعديل على الكود المطلوب وتم توضيحه بردى مسبقاً
لان وظيفة Do فى الكود ليس لها اى اهمية ولا لها اى داع فى الاستخدام

طيب بعد ما عملت استبدال الكود من الى كما فى ردي السابق
لازال الامر مستغرق فى جلب الروابط

قد يكون الاسباب ترجع الى التالى
اما انك تستخدم رابط قناه تحتوى على عديد من الفيديوهات
لذلك يستغرق الامر معك كثيراً وتعتقد انه يقوم بالتكرار
حيث ان الرابط المستخدم هو 
PHP كود :
http://www.downvids.net/download-youtube-channel-videos 

ولاخط ان الرابط يقول انه يريد التحميل من ( channel ) وليس List أو رابط فيديو مستقل

ابحث فى التعليقات على قنوات الاشخاص التى تحتوى على فيديوها بسيطة
يعنى مثلاً هذا الشخص يحتوى على 16 فيديو على القناه تقريباً
https://www.youtube.com/channel/UCouadN8NlEh4Urj_ApwPieQ

جربه بعد اتمام التعديل حتى تقدر ان تري ان المشكلة فى عدد الفيديوهات
ولا القناه التى تحتوى على فيديوهات كثيرة وانت تعتقد انه يكرر بدون توقف

تحياتى لك
وتمنياتى لك التوفيق



RE: اقتناص الروابط بمجرد ظهورها - ابو روضة - 17-08-18

(17-08-18, 10:57 PM)elgokr كتب :
فى البداية انا لا يمكننى اختبار نتائج الكود
بسبب ان الموقع المشتخدم لا يعمل لدى بصورة جيدة 
ولا اعلم مصدر خطاء الموقع داخل المشروع قد يكون بسبب الجافا و المتصفح

لذلك قمت بعمل تعديل على الكود المطلوب وتم توضيحه بردى مسبقاً
لان وظيفة Do فى الكود ليس لها اى اهمية ولا لها اى داع فى الاستخدام

طيب بعد ما عملت استبدال الكود من الى كما فى ردي السابق
لازال الامر مستغرق فى جلب الروابط

قد يكون الاسباب ترجع الى التالى
اما انك تستخدم رابط قناه تحتوى على عديد من الفيديوهات
لذلك يستغرق الامر معك كثيراً وتعتقد انه يقوم بالتكرار
حيث ان الرابط المستخدم هو 
PHP كود :
http://www.downvids.net/download-youtube-channel-videos 

ولاخط ان الرابط يقول انه يريد التحميل من ( channel ) وليس List أو رابط فيديو مستقل

ابحث فى التعليقات على قنوات الاشخاص التى تحتوى على فيديوها بسيطة
يعنى مثلاً هذا الشخص يحتوى على 16 فيديو على القناه تقريباً

جربه بعد اتمام التعديل حتى تقدر ان تري ان المشكلة فى عدد الفيديوهات
ولا القناه التى تحتوى على فيديوهات كثيرة وانت تعتقد انه يكرر بدون توقف

تحياتى لك
وتمنياتى لك التوفيق

فعلا اخى القناة بها فيديوهات كثيرة جدا كمان والرابط الذى وضعته انت نفع ومشى الحال..
                                          لكن التكرار سببه اننى كنت ناسى وضع هذا الكود
        ListBox1.Items.Clear()


لكن نفترض اننى اريد جلب هذه الروابط الكثيرة فكيف يتم التعامل معهم ؟ 
وجزاك الله كل خير حبيبى



RE: اقتناص الروابط بمجرد ظهورها - elgokr - 17-08-18

اذا كان الروابط كثيرة أو قليلة سيتم التعامل معها عادى بدون مشكلة
لكن قد تواجه بعض اللاج فى تحميل الروابط بسبب كثرتها مثلاً

فكل ما عليك هو مثلاً عمل اى مسمى رقمى يبداء برقم 0 خارج for
والاخر من نوع رقمي ايضاً ويكون قيمته كذلك 0 ايضاً خارج for
ومن ثم تقوم بوضع بعد كود اضافة الرابط لليست ان القيمة للرقم +1

هيكون الشكل مثلاً وكلاهما خارج For
كود :
Dim i As Integer = 0
Dim ii As Integer = 0

وما داخل For اسفل كود اضافة الرابط لليست يكون التالى
كود :
i += 1

وبعدها تعمل مثلاً كود تحقق اسفل منه كالتالى
كود :
       If i >= ii + 20 Then
           ii = i
           MessageBox.Show("تم الانتهاء من تحميل " & ii & "هل تريد استكمال التحميل", "تاكيد", MessageBoxButtons.YesNo)
       End If

وبكده انت كل مثلاً 20 رابط تم جلبه تظهر رسالة الاستكمال او لا
وتضع اسف الرسالة كود اذا كان اختار yes يتجاهل اى حاجة وهيستكمل عمله عادى
واذا اختار no يقوم بانهاء كود الزر 

يمكنك التعديل على رقم 20 الى الرقم المناسب حسب تعامل البرنامج والجهاز لديك فى اللود

وهذا ما الا فكرة ويعتمد بالنهاية عليك

تحياتى لك
وتمنياتى لك التوفيق



RE: اقتناص الروابط بمجرد ظهورها - ابو روضة - 18-08-18

(17-08-18, 11:55 PM)elgokr كتب :
اذا كان الروابط كثيرة أو قليلة سيتم التعامل معها عادى بدون مشكلة
لكن قد تواجه بعض اللاج فى تحميل الروابط بسبب كثرتها مثلاً

فكل ما عليك هو مثلاً عمل اى مسمى رقمى يبداء برقم 0 خارج for
والاخر من نوع رقمي ايضاً ويكون قيمته كذلك 0 ايضاً خارج for
ومن ثم تقوم بوضع بعد كود اضافة الرابط لليست ان القيمة للرقم +1

هيكون الشكل مثلاً وكلاهما خارج For
كود :
Dim i As Integer = 0
Dim ii As Integer = 0

وما داخل For اسفل كود اضافة الرابط لليست يكون التالى
كود :
i += 1

وبعدها تعمل مثلاً كود تحقق اسفل منه كالتالى
كود :
       If i >= ii + 20 Then
           ii = i
           MessageBox.Show("تم الانتهاء من تحميل " & ii & "هل تريد استكمال التحميل", "تاكيد", MessageBoxButtons.YesNo)
       End If

وبكده انت كل مثلاً 20 رابط تم جلبه تظهر رسالة الاستكمال او لا
وتضع اسف الرسالة كود اذا كان اختار yes يتجاهل اى حاجة وهيستكمل عمله عادى
واذا اختار no يقوم بانهاء كود الزر 

يمكنك التعديل على رقم 20 الى الرقم المناسب حسب تعامل البرنامج والجهاز لديك فى اللود

وهذا ما الا فكرة ويعتمد بالنهاية عليك

تحياتى لك
وتمنياتى لك التوفيق

جزاك الله كل الخير والسعادة اخى واستاذى الجوكر لوقوفك بجوار الجميع دائما....
يبدو  ان هذا سيكون بطيئا وممّلاً نوعا ما ويبدو ان التعامل مع الويب براوزر اصبح يرمز الى جيل الفراعنة هههه..
قام صديق لى بعمله بالويب ريكويست وصراحة سريعة لدرجة انه يجلب الروابط فى اقل من ثلاث ثوانى
وتمنيت من امس اننى اتعلم هذه التقنية لكنى بعد البحث لم اجد لها شرحا ثقيلا عربيا..
الله المستعان واعتذر لك مغلبك معايا



RE: اقتناص الروابط بمجرد ظهورها - elgokr - 18-08-18

(18-08-18, 12:29 PM)ابو روضة كتب :
جزاك الله كل الخير والسعادة اخى واستاذى الجوكر لوقوفك بجوار الجميع دائما....
يبدو  ان هذا سيكون بطيئا وممّلاً نوعا ما ويبدو ان التعامل مع الويب براوزر اصبح يرمز الى جيل الفراعنة هههه..
قام صديق لى بعمله بالويب ريكويست وصراحة سريعة لدرجة انه يجلب الروابط فى اقل من ثلاث ثوانى
وتمنيت من امس اننى اتعلم هذه التقنية لكنى بعد البحث لم اجد لها شرحا ثقيلا عربيا..
الله المستعان واعتذر لك مغلبك معايا

جميل جداً وهذا افضل بكثير لتجنب اصدارات المتصفحات وتفاعل الجافا ايضاً
يمكنك الاستفادة من الكود الذى امتلكته لديك
فكل ما عليك فعله هو معرفة ما فعله الشخص فى كتابة الكود

وتجرب الكود على شئ اخر مع قيام التعديلات واضافة وازالة من الكود
حتى توضح لك الفكرة كيفية استخدام الكود باكثر من طريقة

تحياتى لك
وتمنياتى لك التوفيق



RE: اقتناص الروابط بمجرد ظهورها - ابو روضة - 18-08-18

(18-08-18, 06:41 PM)elgokr كتب :
جميل جداً وهذا افضل بكثير لتجنب اصدارات المتصفحات وتفاعل الجافا ايضاً
يمكنك الاستفادة من الكود الذى امتلكته لديك
فكل ما عليك فعله هو معرفة ما فعله الشخص فى كتابة الكود

وتجرب الكود على شئ اخر مع قيام التعديلات واضافة وازالة من الكود
حتى توضح لك الفكرة كيفية استخدام الكود باكثر من طريقة

تحياتى لك
وتمنياتى لك التوفيق

انت فنان ودماغك هذه ماشاء الله عليها.....

ربنا يحفظك أينما كنت أخى وحبيبى



RE: اقتناص الروابط بمجرد ظهورها - habamix - 19-08-18

(16-08-18, 05:08 PM)ابو روضة كتب : السلام عليكم ورحمة الله وبركاته
اخوتى انا حاطط اكواد داخل اداة الويب براوزر وحاطط فى الزر الذهاب للموقع المراد اقتناص 
الروابط منه لكن حينما يذهب الى الموقع ويحط الرابط ويجلب الروابط وكله تمام الويب براوزر
بيفضل يقتنص الروابط ويفضل يقتنصها الى مالا نهاية مع انى حاطط شرط ولما بحط الاكواد داخل الزر مباشرة بعطى
له وقت كبير الى ما يذهب للرابط ثم يضع الرابط وينتظر ظهور الروابط ثم يقتنصها...
وانا اريد لما اضغط على الذر يذهب الى الموقع ويقوم بتنفيذ الاوامر التى اعطيته له وحين يجد
الروابط يقتنصها مباشرة دون زيادة او نقصان...
وهذا هو الكود وهو شغال كويس على فكرة ولا به اى مشاكل المشكلة فقط اننى لو حطيت هذا الكود
فى الزر سيأخذ وقت كبير جدا ولما بضعه داخل الويب براوزر بيقتنص الروابط لعدد مالا نهاية يقتنصها ويعيد مرات ومرات


PHP كود :
هذا الكود بضعه فى الزر

  WebBrowser1
.Navigate("http://www.downvids.net/download-youtube-channel-videos")
     
        Await Task
.Delay(10000)


 
WebBrowser1.Document.GetElementById("home_search_q").InnerText TextBox1.Text
        WebBrowser1
.Document.GetElementById("home_search_submit").InvokeMember("Click")

وهذا داخل الويب براوزر

        Await Task
.Delay(30000)

 
       Dim input As HtmlElementCollection
        input 
WebBrowser1.Document.GetElementsByTagName("a")
 
       For Each item As HtmlElement In input
            If item
.InnerText = ("Download as video"Then
                lis
.Add(item.GetAttribute("href"))
 
           End If
 
       Next item
        Dim ss 
As HtmlElementCollection
        ss 
WebBrowser1.Document.GetElementsByTagName("span")
 
       For Each item As HtmlElement In ss
            If item
.GetAttribute("Id").Contains("msgtxt3567146535"Then
                Do
                    ListBox1
.Items.Add(item.InnerText)
 
                   If item.GetAttribute("Id").Contains("msgtxt3567146535"Then
                        Exit 
Do
 
                   End If
 
               Loop
                Label2
.Text "عدد الفيديوهات ......." ListBox1.Items.Count

            End 
If
 
       Next item 

هو ده الكود انا عامل برنامج بث مباشر للمباريات بستخدم الكود هذا اشهر برامج كل يضغط على اى حاجه فى البرنامج البرامج تقفل ع طول

 Dim u() As Process
    Dim w() As Process
    Private Sub CheckIfRunning()
        u = Process.GetProcessesByName("URLHelper")
        If u.Count > 0 Then
            Process.GetProcessesByName("URLHelper")(0).Kill()
        Else
            ' Process is not running
        End If
        u = Process.GetProcessesByName("UrlChecker")
        If u.Count > 0 Then
            Process.GetProcessesByName("UrlChecker")(0).Kill()
        Else
            ' Process is not running
        End If
        w = Process.GetProcessesByName("Wireshark")
        If w.Count > 0 Then
            Process.GetProcessesByName("Wireshark")(0).Kill()
        Else
            ' Process is not running
        End If

    End Sub