![]() |
|
كيفية احضار text من موقع الى برنامجي - نسخة قابلة للطباعة +- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb) +-- قسم : قسم لغة الفيجوال بيسك VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=182) +--- قسم : قسم اسئلة VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=183) +--- الموضوع : كيفية احضار text من موقع الى برنامجي (/showthread.php?tid=9817) الصفحات:
1
2
|
كيفية احضار text من موقع الى برنامجي - boty - 28-07-13 اهلا اخوتي الكرام لدينا مثل هذا الموقع http://egypt.gold-price-today.com/ و هو مختص بأسعار الذهب في مصر هذا شكله في برنامجي لدي label و زر اريد انه عند الضغط على الزر يحضر لي البرنامج سعر الذهب في هذا اليوم عن طريق الأتصال بالأنترنت وقد رأيت برنامجا بهذا الشكل تماما وبلغة vb.net ايضا لكن كان لأسعار العملات و هي نفس الفكرة على ما اظن طبعا لا اريد استعراض السعر في web browser بل في label كيف هذا ؟ كيفية احضار text من موقع الى برنامجي - الشاكي لله - 28-07-13 تريد سعر الذهب بادولار لو ؟؟؟ وأي عيار من الذهب؟؟ كيفية احضار text من موقع الى برنامجي - boty - 28-07-13 الشاكي لله كتب :تريد سعر الذهب بادولار لو ؟؟؟ اخي انا اريد ان اتعلم كيفية تنفيذ البرنامج حتى استفيد فانا تحت التعليم لكن اذا كنت تريد تنفيذ التطبيق فانا اريد سعرة بالجنيه ، و العيار 21 على سبيل المثال كيفية احضار text من موقع الى برنامجي - ربيع - 28-07-13 نحمده ونصلي على رسوله الكريم المثال بالسي شارب :p هذا الكود بعد ترجمته للبيسك ولكن من خلال موقع للترجمة ولا ادري هل هو صحيح 100% ام لا ![]() كود : [align=left]Public Partial Class Form1كيفية احضار text من موقع الى برنامجي - الشاكي لله - 28-07-13 boty كتب :اخي انا اريد ان اتعلم كيفية تنفيذ البرنامج حتى استفيد فانا تحت التعليم امثالك يعجبوني لايريدون الكود جاهزا بل يريدون الكيفية كي يستفيدون لذلك ساشرح لك بالتفصيل -- اولا العملية التي سنقوم باستعمالها تسمى html parsing وتعني تحليل صفحة الويب واستخراج المطلوب هناك اكثر من طريقة لعمل هذا التحليل مثل استخدام مكتبة متخصصة في ذلك اسمها htmlagilitypack وهي مجانية وطبعا هي افضل طريقة للتحليل يمكنك استعمال اداة الويب براوزر لجلب مستند الصفحة وتحليله لكن هذا ليس مفيدا ابدا لأنها ستقوم بتحميل الصور وكل شيئ في الصفحة وهذا يأخذ وقتا بالاضافة الى استهلاك مساحة اكبر من الرام وجلب اشياء لانريدها كا الكوكيز والجيتش كل هذا لسنا بحاجة اليه مما يجعل اداة الويب براوزر اداة فاشلة للparsing html وهناك البديل -- الان ماذا تريد ان نستخرج من الصفحة تريد ان نستخرج نصا صحيح , لذلك افتح قوقل كروم او الفايرفوكس واذهب للنص الذي تريد استخراجه وقم بتحديده واضغط زر يمين على النص واختار اخر خيار ظهرت لما قائمة جديدة في الاسفل وهي قائمة عناصر الصفحة (elements) وتم تحديد العنصر الحالي (262.91) ماذا الان ؟؟ احتفظ بهذه الصورة لأننا سنرجع لها لاحقا -- الان قم بتنزيل مكتبة Html Agility Pack من المرفقات لنقم بالبرمجة 1- نضيف زر نسميه Get gold price 2- نضيف ليبل 3- نضيف مرجع عبر الذهاب الى project في الاعلى ثم add refreance ثم browse ثم اختر ملف HtmlAgilityPack.dll المرفق في الحزمة rar خلاص الان ندخل على حدث button1-click ونقوم بكتابة الاتي PHP كود : Dim hweb As New HtmlAgilityPack.HtmlWeb()نقوم بشرح الاكواد 1. قمنا بتعريف كائن hweb 2. قمنا بتحميل سورس الصفحة ونسخها الى كائن اخر هو htmlDocument - العملية تاخذ 3 ثواني فقط بعكس اداة webbrowser 3. قمنا بالدوران على كل العناصر الي الtag تبعها tr ماهي العناصر التي الtag مالها tr ؟؟ لنرى صورتنا السابقة ترى ان العنصر المحدد صاحب التاغ tr يحتوي على العناصر المطلوب استخراجها لذلك قمت بكتابة هذا الكود PHP كود : doc.DocumentNode.SelectNodes("//tr") وعندما يجد البرنامج عنصرا ذو تاغ tr سيقوم بالدخول للعمليات التالية PHP كود : Trytry كتبت لكي لا تحصل اخطاء توقف البرنامج الان قمت بكتابة جملة شرطية اذا تحققت سيتم الدخول الى الاكواد الي داخلها شرط الجملة هو انه يجب ان يكون النص في العنصر صاحب التاغ th هو "سعر الذهب عيار 21" ولكن هل ترا رمز النقطة (".//th") يعني ان يتم تحديد العناصر صاحبة التاغ th داخل ال node الحالي فقط وليس على مستوى الصفحة selectnode تعود بمصفوفة وقمت بتحديد باختيار العنصر 0 من المصفوفة ليتم جلبه وتتم المقارنة عليه ليش كتبت 0 ؟؟ الجواب هو انه لايوجد اصلا سوا عنصر واحد التاغ تبعه th في الnode الحالي انظر مرة اخرى كما ترى يوجد فقط عنصر واحد فيه tag th لذلك اخترنا 0 وتعني (حدد اول عنصر يحتوي على tag th) طيب لنفترض ان في الnode الحالي هناك 2 من الtag th ونريد تحديد الثانية سنقوم بكتابة 1 بدل صفر وهكذا الان نكمل حكايتنا بعد ان ينجح الشرط ويتم الدخول للاكواد نرى الكود النهائي PHP كود : label1.Text = node.SelectNodes(".//td")(0).InnerText ويعني نسب النص الموجود في العنصر الاول الذي يحتوي على التاغ td داخل الnode الحالي الى الليبل ههه جملة طويلة صح !! المهم هذا الي راح يصير طيب لو اردنا جلب قيمة محلات الذهب كيف سيكون الامر ؟؟ يكون هكذا PHP كود : label1.Text = node.SelectNodes(".//td")(1).InnerText PHP كود : label1.Text = node.SelectNodes(".//td")(2).InnerText شاهد الصورة : هل وضحت الصورة الان ؟؟ طبعا هذا الكود طويل شو . في الحقيقة انا في العادة اجلب القيمة الي اريدها من خلال سطر واحد ودون تكرار ودوران واحد ولكني سهلت عليك الكود وفي النهاية اعرض لك صفحة تهم كل من يستعمل مكتبة htmlagilitypack http://codingfields.com/guides/htmlagilitypack/ -- الكود كامل PHP كود : Public Partial Class Form1-- للأسف الكود مكتوب بالسي شارب فما اعتقد انك راح تستفيد من السورس فقط ارفقت الملف التنفيذي والمكتبة كيفية احضار text من موقع الى برنامجي - الشاكي لله - 28-07-13 DreamsDotNet كتب :نحمده ونصلي على رسوله الكريم اسف اخي ردك تزامن مع ردي لم اكن اعلم ذلك ولكن كودك صحيح وانا فقط قدمت طريقة اخرى كيفية احضار text من موقع الى برنامجي - @@أبورائد@@ - 28-07-13 السلام عليكم ورحمة الله وبركاته وهذه طريقة أخرى ولكني وجدت الأخوة الكرام سبقوني بالحلول أثناء تجهيز المثال بارك الله فيهم هذه الطريقة باستخدام تحليل html النص فقط (وهي تصلح لموقع محدد) السلام عليكم ورحمة الله وبركاته كيفية احضار text من موقع الى برنامجي - boty - 28-07-13 لا أعرف كيف اشكركم والله يا أفضل و أروع أعذاء منتدى في الكون:d ما شاء الله خبراء دوليون و الله كل هذه طرق مختلفه بارك الله فيكم و جازاكم الخير شكرا شكرا شكرا شكرا شكرا شكرا شكرا شكرا
RE: كيفية احضار text من موقع الى برنامجي - mohdy - 02-11-14 الرابط مش شغال ؟؟؟ Egypt gold price today-01.rar الرابط مش شغال RE: كيفية احضار text من موقع الى برنامجي - سعود - 02-11-14 المثال مرفق لاول مرة استفيد من برنامج نسخ المنتدى الذي صممته ![]() الملف هو: Egypt gold price today-01.rar |