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

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



جلب صورة أى فيديو بالHtmlAgilityPack - ابو روضة - 30-10-18

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


كود :
 Dim wc As New WebClient
       wc.Encoding = Encoding.UTF8
       Dim html As String = wc.DownloadString("https://www.youtube.com/watch?v=a80DTFHrmi0")
       Dim doc As New HtmlAgilityPack.HtmlDocument
       doc.LoadHtml(html)
       For Each n As HtmlAgilityPack.HtmlNode In doc.DocumentNode.SelectNodes("//*[@id='grid-558373']/li[5]/div/div[1]/div[1]/a/div/span/img")
           PictureBox1.Load(n.Attributes("src").Value)
       Next

فممكن اعرف ما هو الخطأ لو سمحتم .


RE: جلب صورة أى فيديو بالHtmlAgilityPack - elgokr - 30-10-18

من الطبيعي سيكون الخطاء فى هذا الجزء
كود :
id='grid-558373'

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

حتى بمجرد البحث عن 
كود :
grid-

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

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



RE: جلب صورة أى فيديو بالHtmlAgilityPack - ابو روضة - 30-10-18

(30-10-18, 09:31 PM)elgokr كتب : من الطبيعي سيكون الخطاء فى هذا الجزء
كود :
id='grid-558373'

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

حتى بمجرد البحث عن 
كود :
grid-

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

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

نعم أخى ولكنى بحاول مع كذا فيديو وصححت الكود بعض الشيئ وللاسف كما هو الحال

الكود الجديد


كود :
Dim wc As New WebClient
       wc.Encoding = Encoding.UTF8
       Dim html As String = wc.DownloadString("https://www.youtube.com/watch?v=q9yKUiOYj8Y")
       Dim doc As New HtmlAgilityPack.HtmlDocument
       doc.LoadHtml(html)
       For Each n As HtmlAgilityPack.HtmlNode In doc.DocumentNode.SelectNodes("//*[@id='watch7-sidebar-modules']/div[1]/div/div[2]/ul/li/div[2]/a/span/img")
           PictureBox1.Load(n.Attributes("src").Value)
       Next



RE: جلب صورة أى فيديو بالHtmlAgilityPack - elgokr - 31-10-18

بخصوص الكود الاخير بعد التحرير يعمل بدون مشكلة
ولكن ستحتاج الى تعديل بسيط وهو جعل السطر التالى بهذا الشكل
كود :
PictureBox1.Load("https://s.ytimg.com" + n.Attributes("src").Value)

طيب لماذا لم يظهر اى صورة
لان المسار الذى تم جلبه عبارة عن الرابط التالى
https://s.ytimg.com/yts/img/pixel-vfl3z5WfW.gif

طيب لو تخيلنا الكود ماذا يجلب تماماً


الكود وظيفته ان يصل الى هذا السطر 
كود :
<img width="168" data-thumb="https://i.ytimg.com/vi/a80DTFHrmi0/hqdefault.jpg?sqp=-oaymwEiCKgBEF5IWvKriqkDFQgBFQAAAAAYASUAAMhCPQCAokN4AQ==&amp;rs=AOn4CLD15kojLztiUo2kAVVuC2UZDs7Y5A" alt="" style="top: 0px" src="/yts/img/pixel-vfl3z5WfW.gif" height="94" aria-hidden="true" >

من ثم جلب البيانات خاصة قيمة [ src ] وهي 
كود :
/yts/img/pixel-vfl3z5WfW.gif

طيب معنى كده لو كنت محتاج جلب صورة الفيديو فالاصح تغيير كلمة [ src ] الى [ data-thumb ] 

تماماً كده حتى يصبح السطر التعديل التالى
كود :
PictureBox1.Load(n.Attributes("src").Value)

ليصبح بعد التعديل بهذا الشكل
كود :
PictureBox1.Load(n.Attributes("data-thumb").Value)

ليعرض بالنهاية عند الاختبار هذه الصورة


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



RE: جلب صورة أى فيديو بالHtmlAgilityPack - ابو روضة - 31-10-18

(31-10-18, 04:43 AM)elgokr كتب : بخصوص الكود الاخير بعد التحرير يعمل بدون مشكلة
ولكن ستحتاج الى تعديل بسيط وهو جعل السطر التالى بهذا الشكل
كود :
PictureBox1.Load("https://s.ytimg.com" + n.Attributes("src").Value)

طيب لماذا لم يظهر اى صورة
لان المسار الذى تم جلبه عبارة عن الرابط التالى

طيب لو تخيلنا الكود ماذا يجلب تماماً


الكود وظيفته ان يصل الى هذا السطر 
كود :
<img width="168" data-thumb="https://i.ytimg.com/vi/a80DTFHrmi0/hqdefault.jpg?sqp=-oaymwEiCKgBEF5IWvKriqkDFQgBFQAAAAAYASUAAMhCPQCAokN4AQ==&amp;rs=AOn4CLD15kojLztiUo2kAVVuC2UZDs7Y5A" alt="" style="top: 0px" src="/yts/img/pixel-vfl3z5WfW.gif" height="94" aria-hidden="true" >

من ثم جلب البيانات خاصة قيمة [ src ] وهي 
كود :
/yts/img/pixel-vfl3z5WfW.gif

طيب معنى كده لو كنت محتاج جلب صورة الفيديو فالاصح تغيير كلمة [ src ] الى [ data-thumb ] 

تماماً كده حتى يصبح السطر التعديل التالى
كود :
PictureBox1.Load(n.Attributes("src").Value)

ليصبح بعد التعديل بهذا الشكل
كود :
PictureBox1.Load(n.Attributes("data-thumb").Value)

ليعرض بالنهاية عند الاختبار هذه الصورة


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

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



RE: جلب صورة أى فيديو بالHtmlAgilityPack - ابو روضة - 31-10-18

بفضل الله ثم أنت جلبت الصورة واسم الفيديو كمان


PHP كود :
 Dim wc As New WebClient
        wc
.Encoding Encoding.UTF8
        Dim html 
As String wc.DownloadString("https://www.youtube.com/watch?v=q9yKUiOYj8Y")
 
       Dim doc As New HtmlAgilityPack.HtmlDocument
        doc
.LoadHtml(html)
 
       For Each n As HtmlAgilityPack.HtmlNode In doc.DocumentNode.SelectNodes("//*[@id='watch7-sidebar-modules']/div[1]/div/div[2]/ul/li/div[2]/a/span/img")
 
           For Each d As HtmlAgilityPack.HtmlNode In doc.DocumentNode.SelectNodes("//*[@id='eow-title']")
 
               TextBox3.Text d.InnerText.Trim
                PictureBox1
.Load(n.Attributes("data-thumb").Value)
 
           Next
        Next 



RE: جلب صورة أى فيديو بالHtmlAgilityPack - elgokr - 31-10-18

(31-10-18, 12:00 PM)ابو روضة كتب :
ههههه والله انك لفنان ابن فنان وما عجبنى أكثر بخلاف حل المشكلة
وظهور الصورة سريعاً هو تحليلك وشرحك الذى يجعل من العدم وجود
ومن المستحيل ممكناً... روح يا شيخ الله يرزقك جنة الدنيا و الأخرة

Big Grin  دائماً الابتسامة يارب والضحكة الجميلة من القلب

تقبل الله منك الدعاء ولنا جميعاً باذن الله

(31-10-18, 03:22 PM)ابو روضة كتب :
بفضل الله ثم أنت جلبت الصورة واسم الفيديو كمان


PHP كود :
 Dim wc As New WebClient
        wc
.Encoding Encoding.UTF8
        Dim html 
As String wc.DownloadString("https://www.youtube.com/watch?v=q9yKUiOYj8Y")
 
       Dim doc As New HtmlAgilityPack.HtmlDocument
        doc
.LoadHtml(html)
 
       For Each n As HtmlAgilityPack.HtmlNode In doc.DocumentNode.SelectNodes("//*[@id='watch7-sidebar-modules']/div[1]/div/div[2]/ul/li/div[2]/a/span/img")
 
           For Each d As HtmlAgilityPack.HtmlNode In doc.DocumentNode.SelectNodes("//*[@id='eow-title']")
 
               TextBox3.Text d.InnerText.Trim
                PictureBox1
.Load(n.Attributes("data-thumb").Value)
 
           Next
        Next 

الحمد لله والحمد لله على كل حال

يفضل ان تجعل الكود بهذا الشكل

كود :
Dim wc As New WebClient
       wc.Encoding = Encoding.UTF8
       Dim html As String = wc.DownloadString("https://www.youtube.com/watch?v=q9yKUiOYj8Y")
       Dim doc As New HtmlAgilityPack.HtmlDocument
       doc.LoadHtml(html)
       For Each n As HtmlAgilityPack.HtmlNode In doc.DocumentNode.SelectNodes("//*[@id='watch7-sidebar-modules']/div[1]/div/div[2]/ul/li/div[2]/a/span/img")
           PictureBox1.Load(n.Attributes("data-thumb").Value)
       Next
       For Each d As HtmlAgilityPack.HtmlNode In doc.DocumentNode.SelectNodes("//*[@id='eow-title']")
           TextBox3.Text = d.InnerText.Trim
       Next

لان تخيل لو قلنا يماً ما اصبح كود كلب الصورة اكثر من مرة 

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

لتبسيط الامر لنتخيل الـ For الاولى خاصة جلب الصورة تتم على 3 مرحل تنفيذ
1- صورة
2- صورة
3- صورة

بينما For خاصة العنوان فقط واحد ليصبح
1- عنوان

تخيل وهما بداخل بعض سيكون الامر
1- صورة > 1- عنوان
2- صورة > 1- عنوان
3- صورة > 1- عنوان

اتمنى ان تكون ما اقصده وصلت لك

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



RE: جلب صورة أى فيديو بالHtmlAgilityPack - ابو روضة - 31-10-18

(31-10-18, 10:37 PM)elgokr كتب :
(31-10-18, 12:00 PM)ابو روضة كتب :
ههههه والله انك لفنان ابن فنان وما عجبنى أكثر بخلاف حل المشكلة
وظهور الصورة سريعاً هو تحليلك وشرحك الذى يجعل من العدم وجود
ومن المستحيل ممكناً... روح يا شيخ الله يرزقك جنة الدنيا و الأخرة

Big Grin  دائماً الابتسامة يارب والضحكة الجميلة من القلب

تقبل الله منك الدعاء ولنا جميعاً باذن الله

(31-10-18, 03:22 PM)ابو روضة كتب :
بفضل الله ثم أنت جلبت الصورة واسم الفيديو كمان


PHP كود :
 Dim wc As New WebClient
        wc
.Encoding Encoding.UTF8
        Dim html 
As String wc.DownloadString("https://www.youtube.com/watch?v=q9yKUiOYj8Y")
 
       Dim doc As New HtmlAgilityPack.HtmlDocument
        doc
.LoadHtml(html)
 
       For Each n As HtmlAgilityPack.HtmlNode In doc.DocumentNode.SelectNodes("//*[@id='watch7-sidebar-modules']/div[1]/div/div[2]/ul/li/div[2]/a/span/img")
 
           For Each d As HtmlAgilityPack.HtmlNode In doc.DocumentNode.SelectNodes("//*[@id='eow-title']")
 
               TextBox3.Text d.InnerText.Trim
                PictureBox1
.Load(n.Attributes("data-thumb").Value)
 
           Next
        Next 

الحمد لله والحمد لله على كل حال

يفضل ان تجعل الكود بهذا الشكل

كود :
Dim wc As New WebClient
       wc.Encoding = Encoding.UTF8
       Dim html As String = wc.DownloadString("https://www.youtube.com/watch?v=q9yKUiOYj8Y")
       Dim doc As New HtmlAgilityPack.HtmlDocument
       doc.LoadHtml(html)
       For Each n As HtmlAgilityPack.HtmlNode In doc.DocumentNode.SelectNodes("//*[@id='watch7-sidebar-modules']/div[1]/div/div[2]/ul/li/div[2]/a/span/img")
           PictureBox1.Load(n.Attributes("data-thumb").Value)
       Next
       For Each d As HtmlAgilityPack.HtmlNode In doc.DocumentNode.SelectNodes("//*[@id='eow-title']")
           TextBox3.Text = d.InnerText.Trim
       Next

لان تخيل لو قلنا يماً ما اصبح كود كلب الصورة اكثر من مرة 

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

لتبسيط الامر لنتخيل الـ For الاولى خاصة جلب الصورة تتم على 3 مرحل تنفيذ
1- صورة
2- صورة
3- صورة

بينما For خاصة العنوان فقط واحد ليصبح
1- عنوان

تخيل وهما بداخل بعض سيكون الامر
1- صورة > 1- عنوان
2- صورة > 1- عنوان
3- صورة > 1- عنوان

اتمنى ان تكون ما اقصده وصلت لك

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


بارك الله فيك أخى الجوكر على إهتمامك وتبسيط كل الأمور

على جميع الأعضاء والف مليون مبروك الاشراف والله تستحقها وبجدارة كمان...



RE: جلب صورة أى فيديو بالHtmlAgilityPack - elgokr - 31-10-18

انا مش هرد عليك 
هسيب الصورة تخيلها ترد عليك  Big Grin


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