![]() |
|
استخراج معلومات محددة من جدول html باستعمال HtmlAgilityPack - نسخة قابلة للطباعة +- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb) +-- قسم : قسم لغة السي شارب C#.NET (http://vb4arb.com/vb/forumdisplay.php?fid=175) +--- قسم : قسم اسئلة C#.NET (http://vb4arb.com/vb/forumdisplay.php?fid=176) +--- الموضوع : استخراج معلومات محددة من جدول html باستعمال HtmlAgilityPack (/showthread.php?tid=14237) |
استخراج معلومات محددة من جدول html باستعمال HtmlAgilityPack - Zads10 - 26-12-15 السلام عليكم مرحبا اخواني ,,, انا جديد معكم ,, وحت اني لسى بادء في C# من يومين المهم الامر كالتالي : يوجد صورة + كود اني اريد استخراج معلومات محددة من جدول html باستعمال HtmlAgilityPack + مع تبديل ترتيب مصفوفتين عند عرض الناتج ===== صورة توضح الامر ==== هدا كود تجربتي لكن الكود يجلب كل معلومات الجدول وانا اريد معلومات محددة مع تبديل ترتيب مصفوفتين عند عرض الناتج كود : // Clear Datagridview===== كود صفحة html PHP كود : <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">====== لقد شاهدت موضوع الاخ الشاكي لله ,, فيديو الشرح محدوف + اني لم افهم كود المتال جيدا موضوع الاخ http://vb4arb.com/vb/thread-1623.html =========== ارجو المساعدة ,, بتعديل على الاكود او ارفق متال قريب لموضوعي في انتظار مروركم RE: استخراج معلومات محددة من جدول html باستعمال HtmlAgilityPack - Zads10 - 26-12-15 لو مساعدة اصدقائي ؟؟ RE: استخراج معلومات محددة من جدول html باستعمال HtmlAgilityPack - الشاكي لله - 27-12-15 عليكم السلام ورحمة الله وبركاته ان كنت تستخرج البيانات بشكل صحيح ، اذن لاداعي لتعديل اكواد الاستخراج تستطيع التعديل على الdatatable مثلا كود الحذف من الdatatable PHP كود : System.Data.DataTable dt = new System.Data.DataTable();واما بخصوص اعادة ترتيب اعمدة الdatatable فتوجد الدالة SetOrdinal PHP كود : dt.Columns[3].SetOrdinal(2);RE: استخراج معلومات محددة من جدول html باستعمال HtmlAgilityPack - الشاكي لله - 27-12-15 تم التطبيق على مثالك والكود جاهز وهو كما يلي : PHP كود : ...دائما اخي عندما تتعامل مع html ، اولا اجلب جميع البيانات (سواء المهمة والغير مهمة). بعدها قم بادخال البيانات داخل array او datatable او اي collection بعدها بسهولة يمكنك عمل الفلترة بدوال الدوت نت كما رايت
RE: استخراج معلومات محددة من جدول html باستعمال HtmlAgilityPack - الشاكي لله - 27-12-15 اسمح لي ان اقوم بإعادة تصوير الفيديو الخاص ب HAPXPathFinder حيث سأقوم ببناء نفس مثالك ولكن سنشرح كيفية التعامل مع HAPXPathFinder لكتابة الكود RE: استخراج معلومات محددة من جدول html باستعمال HtmlAgilityPack - Zads10 - 27-12-15 (27-12-15, 12:30 AM)الشاكي لله كتب : تم التطبيق على مثالك والكود جاهز وهو كما يلي : بارك الله فيك على تجاوبك تفكيرك للحل صراحة ابهرني ,,, لم افكر في الامر ,,,, معك حق استخراج المعلومات html من تم الى array او ,,, تبقى سهلة وعملية وتتعامل بليونة بالمعلومات ,,,,, راح اشتغل بها تشكر اخي شاكي لله ,,, (27-12-15, 12:40 AM)الشاكي لله كتب : اسمح لي ان اقوم بإعادة تصوير الفيديو الخاص ب HAPXPathFinder حيث سأقوم ببناء نفس مثالك ولكن سنشرح كيفية التعامل مع HAPXPathFinder لكتابة الكود تفضل اخي خد راحتك ,,, انا الي راح اشكرك انك راح تعمل شيء تفيد به الجميع ,,, بارك الله فيك ===== بالنسبة للحل لقد وصلت لحل ,,, لكن طريقة حلك في الرد اعلى احسن ,,, الحل قام بمساعدتي به اخ ,,, وكان حله كالتالي الكود صحيح وشغال... مع بعض الاشكالات لو تعمل لها تحليل في الشرح تفضل هدا كود الحل ,,, للافادة ===== كود : HtmlAgilityPack.HtmlDocument html = new HtmlAgilityPack.HtmlDocument();الكود شغال مع متال صفحة html المرفق ,,, لكن هناك اشكال في كود الحل وهو في XPatch لانه غير عملي لو هناك جداول كتييرة ولها نفس الستايل هدا هو ,, ("//table[@border='1']") اتكلم عن هدا السطر ==== كود : HtmlNode table = html.DocumentNode.SelectSingleNode("//table[@border='1']")==== ولما استعملت HAPXPathFinder وقمت بجلب XPatch يكون جيد وعملي ("//p[4]/table") منطقيا كان يجب ان يشتغل لاني جربته في HAPXPathFinder واعطى الناتج => لكن لم يشتغل الكود ,,, ,,,, لو امكن ان تشير الى الامر في شرحك او توضحه هنا ,,, لكي تعم الفائدة ,,,, وهو انه لما عوضت XPatch الكود بالــ XPatch التاني ولم يشتغل الكود في انتظار مرورك ,,,, راح اكتر عليك اخي الشاكي لله ,,, لو لك وقت تمر على هدا الموضوع ,,, http://vb4arb.com/vb/thread-14243-post-68107.html بالتوفيق لكــ ,,, RE: استخراج معلومات محددة من جدول html باستعمال HtmlAgilityPack - الشاكي لله - 27-12-15 ^ الxpath لايمكن ان يتشابه معه عنصر اخر مهما حصل حتى لو كانت هناك جداول مشابهة لبعض لايمكن ان يحصل تشابه في الxpath الصيغة التي تستعملها لاتسمى xpath اقصد هذه ("//table[@border='1']") انما انت باستعمالها كانك تقول للدالة ، ابحثي عن الnode المسمى table الذي يحتوي على المواصفة border = 1 وبالفعل ذلك صحيح ان استخدام صيغة البحث باستعمال الnode والمواصفة فاشلة ، حيث كما قلت اذا تشابه اكثر من عنصر في نفس اسم النود وفي نفس قيمة المواصفة ، طبعا هذا سيحصل لو كان في الصفحة اكثر من جدول ،بالتالي سيحصل تضارب في جلب القيم. لذلك الحل هو استخدام الxpath وهو string فريد خاص لكل عنصر في الhtml وهو لايتكرر مثال ل xpath الtable في مثالك ، سيكون : /html[1]/body[1]/p[4]/table[1] RE: استخراج معلومات محددة من جدول html باستعمال HtmlAgilityPack - Zads10 - 27-12-15 (27-12-15, 02:40 AM)الشاكي لله كتب : ^ نعم هدا الي حصل وقمت بوضع xpath لاجل جعل الامر مضبوط اكتر لقد عملت xpath ,, الي وضعت /html[1]/body[1]/p[4]/table[1] وهو نفسه الى اشرت له فوق //p[4]/table (بما انه توجد html و body واحدة في الكود) بعد ان جربته وتأكدت منه في اداة HAPXPathFinder ,, الاصدار الاخير ,,, حسب ما موضح هنا https://www.youtube.com/watch?v=wsIZgAiH8kg ==== بعد ما جربت على الكود المرفق بوضع الxpath ,,, يطلع مشكل ولا يشتغل ==== صورة توضيحية ==== لا عليك ,,, راح اشتغل بفكرتك ,,, حت تضع فديو الشرح وافهم الامر جيدا بالتوفيق لكــ RE: استخراج معلومات محددة من جدول html باستعمال HtmlAgilityPack - الشاكي لله - 27-12-15 ^ جربت الكود عندي وهو يعمل تمام ويقوم بالجلب يبدو ان المشكلة في المكتبة عندك هل المكتبة التي يستخدمها برنامجك كRefreance هي نفسها المكتبة التي تستعملها اداة haxxfinder ? برفق لك المكتبة + الاداة هنا ، الاداة معدلة اصبح بامكانها فتح روابط من سطح المكتب : RE: استخراج معلومات محددة من جدول html باستعمال HtmlAgilityPack - Zads10 - 28-12-15 (27-12-15, 06:55 AM)الشاكي لله كتب : ^ جربت الكود عندي وهو يعمل تمام ويقوم بالجلب معك حق كانت المشكلة من المكتبة كنت احملها مباشرة من مركز محرر .net بعد استعمال المكتبة المرفقة اشتغل الامر الف شكـــــررررر اخي الشاكي لله |