تقييم الموضوع :
  • 1 أصوات - بمعدل 5
  • 1
  • 2
  • 3
  • 4
  • 5
[سلسلة ادوات المبرمج] {2} - اداة تحليل صفحات الويب HAPXPathFinder
#1
بسم الله الرحمن الرحيم

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



[سلسلة ادوات المبرمج] {2} - اداة تحليل صفحات الويب HAPXPathFinder


--


ماهي اداة HAPXPathFinder

هي اداة تستخدم مع مكتبة htmlagilitypack المختصة بتحليل صفحات الويب .

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


كيف ستسخرجها وتضعها في ListView كما فعلت انا ؟



بعضكم استعمل التعابير القياسية Regex ، مثل احد الاخوان في المنتدى .. وانا نصحته عدة مرات ان استعمال التعابير القياسية غير عملي ابدا في تحليل الصفحات بوجود المكتبة العملاقة htmlagilitypack ..


كود البرنامج الي فوق :

PHP كود :
private void button1_Click(object senderEventArgs e)
        {
            
listView1.Items.Clear();
            
listView2.Items.Clear();
            
string carrier "";
            if (
comboBox1.Text.ToLower().Equals("egyptair")){carrier "MS";}

            
string URL string.Format("http://www.cargoserv.com/trace/trace.asp?Carrier={0}&Shipment_text={1}-{2}&Header=no&Site=Cserv",
                new 
string[] { carriertextBox1.Text.Trim(), textBox2.Text.Trim() });

            
HtmlWeb hWeb = new HtmlWeb();
            
HtmlAgilityPack.HtmlDocument doc hWeb.Load(URL);

            
AddHistoryTableToListview(doc);
            
AddStatusTableToListview(doc);
        }

        
void AddHistoryTableToListview(HtmlAgilityPack.HtmlDocument document)
        {
            
HtmlNode historyTable document.DocumentNode.SelectSingleNode
                
("/html[1]/body[1]/table[1]/tr[1]/table[2]/table[2]/tr[1]");

            
ListViewItem listItem = new ListViewItem();
            
listItem.Text historyTable.ChildNodes[1].ChildNodes[0].InnerText.Trim();
            
listItem.SubItems.Add(historyTable.ChildNodes[3].ChildNodes[0].InnerText.Trim());
            
listItem.SubItems.Add(historyTable.ChildNodes[5].ChildNodes[0].InnerText.Trim());
            
listItem.SubItems.Add(historyTable.ChildNodes[7].ChildNodes[0].InnerText.Trim());
            
listItem.SubItems.Add(historyTable.ChildNodes[9].ChildNodes[0].InnerText.Trim());
            
listItem.SubItems.Add(historyTable.ChildNodes[11].ChildNodes[0].InnerText.Trim());

            
listView1.Items.Add(listItem);
        }

        private 
void AddStatusTableToListview(HtmlAgilityPack.HtmlDocument document)
        {
            
HtmlNode dataTable document.DocumentNode.SelectSingleNode
                
("/html[1]/body[1]/table[1]/tr[1]/table[2]/table[4]");
            foreach (
HtmlAgilityPack.HtmlNode node in dataTable.SelectNodes("./tr"))
            {
                
ListViewItem listItem = new ListViewItem();
                
listItem.Text node.ChildNodes[1].ChildNodes[0].InnerText.Trim();
                
listItem.SubItems.Add(node.ChildNodes[3].ChildNodes[0].InnerText.Trim());
                
listView2.Items.Add(listItem);
            }
        } 

الان اتحدى اي شخص يحلل الجدول ويستخرج البيانات بهذه السطور البسيطة بواسطة Regas >> مستحيل

استعمال الregas بيجعل الكود اكثر تعقيدا واصعب للتنقيح والفرق بين السماء والارض بينها وبين htmlagilitypack من ناحية السهولة والدقة .



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









شرح اداة HAPXPathFinder




في المقالة السابقة كنت استخدم طريقة بدائية للتحليل وهي بالتتبع في متصفح الFirefox وهذا الامر غير دقيق قأتذكر الاخ klsawy الله يذكره بالخير واجه مشكلة في الحصول على xpath لبعض العناصر

السبب هو ان DOM الFirefox مختلف عن Dom مكتبة HtmlAgilityPack وبالتالي ترتيب العناصر مختلف عن اداة HtmlAgilityPack حتى اني ضننت ان هناك مشكلة في نفس المكتبة

ولكن تبين لي انها احترافية اكثر ممااضن . ولحسن الحظ وجدت برنامج اسمه HAPXPathFinder وهو يستخدم بشكل خاااص للHtmlAgilityPack وهو رائع جدااا

يعني مشاكل الxpath والelement كلها انسااهاا مع هذه الاداة .



وقد عملت شرح فيديو طلبه احد الاعضاء وانا اقوم بتنفيذ (سحب بيانات من جداول صفحة الويب ووضعها في ListView)


الشرح مدته 29 دقيقة بالصوت والصورة بجودة عالية (مشاهدة ممتعة)





او على اليوتيوب :-

إقتباس :http://www.youtube.com/watch?v=vNRhfXALu5g


--


تحميل الاداة :


إقتباس :http://hapxpathfinder.codeplex.com/downloads/get/597452


تحياتي
الرد }}}
تم الشكر بواسطة: mamas1 , delegater , hoob computer , Japan , أبووسم , ربيع , السندبااد
#2
مقاللاتك ذهبية جدا وغالية جدا
اسئل الله تعالي ان يجزيك عنا خيرا الجزاء
طبقت الشرح والان صرت محترف تحليل هههه
الرد }}}
تم الشكر بواسطة: الشاكي لله
#3
أقل ما يقال عنك مبدع ما شاء الله ...


السلام عليكم
الرد }}}
تم الشكر بواسطة: الشاكي لله
#4
الفديو لا يعمل اتمنى اخي الشاكي لله تسمح لنا بمشاهدة الفديو وتخليه عام


وشكرا لك
اثنان لا يتعلمان المتكبر والخجول
Heart اللهم علمنا ما ينفعنا و انفعنا بما علمتنا وَ زِدْنا علماً‏ Heart
الرد }}}
تم الشكر بواسطة:
#5
بارك الله فيك اخي شرحك روعة من بداية السلسة
اخي الشاكي لله الله يخليك لو امكن اعادة رفع الفديو ,, اضن ان القناة حدفت ,,,
صراحة الفديو مكمل للمقال ,,, فارجوا ان تعد رفعه جزاك الله خيرا
في انتظار ردك
الرد }}}
تم الشكر بواسطة:
#6
(22-12-15, 09:25 PM)Zads10 كتب : بارك الله فيك اخي شرحك روعة من بداية السلسة
اخي الشاكي لله  الله يخليك لو امكن اعادة رفع الفديو ,, اضن ان القناة حدفت ,,,
صراحة الفديو مكمل للمقال ,,, فارجوا ان تعد رفعه جزاك الله خيرا
في انتظار ردك


والله يا اخي المشكلة ان الموضوع قديم جدا

فالفيديو غير موجود عندي

ساحاول تصوير فيديو غيره قريبا رغم اني نسيت طريقة التحليل من الاساس ههههههه
الرد }}}
تم الشكر بواسطة: Zads10
#7
(22-12-15, 10:51 PM)الشاكي لله كتب :
(22-12-15, 09:25 PM)الشاكي لله كتب : والله يا اخي المشكلة ان الموضوع قديم جدا

فالفيديو غير موجود عندي 

ساحاول تصوير فيديو غيره قريبا رغم اني نسيت طريقة التحليل من الاساس ههههههه

....
شكرا لك على تفاعلك مع ردي 
راح احاول اطبق الامر وافهمه من متال الكود الدي وضعته 
,,, 
الرد }}}
تم الشكر بواسطة:
#8
السلام عليكم اخي شاكي الله
اخي لو امكن مرورك على هدا الموضوع الامر بخصوص HtmlAgilityPack
http://vb4arb.com/vb/thread-14237.html
جزاك الله خيرا
الرد }}}
تم الشكر بواسطة:
#9
الله يعطيك الف عافية اخي اتمنى منك وضع موضوع شامل عن التعابير القياسية مع امثلة ان شاء الله
الرد }}}
تم الشكر بواسطة:
#10
الله يعطيك العافيهه
(( نحن قوم أعزنا الله بالإسلام فمهما ابتغينا العزة بغيره أذلنا الله )) .. 











الرد }}}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  مشكلة لم اعلم ما هي حلها مع الغرم بانني اضفة ادوات الSQLSERVER qashwah515 2 3,253 23-11-21, 09:49 AM
آخر رد: qashwah515
  [سلسلة التحكم] {4} - التحكم عن بعد بواسطة خدمة الويب الشاكي لله 7 9,568 12-07-21, 02:34 PM
آخر رد: devante.celvin
  [سلسلة التحكم] {5} - التحكم بالمصباح بواسطة الـ USB و Arduino الشاكي لله 12 25,184 30-12-19, 01:38 AM
آخر رد: mohammed abdalsamed
  [سلسلة التحكم] {3} - خدمة الويب (Web Service) الشاكي لله 9 12,808 25-09-19, 05:47 PM
آخر رد: al9atl
  تجميعية مقالات [سلسلة التحكم] الشاكي لله 10 7,502 15-07-19, 09:14 AM
آخر رد: mrsalnet
  [سلسلة التعامل مع الويب] - ارسال الطلبات HttpWebRequset الشاكي لله 42 28,392 29-05-19, 10:38 PM
آخر رد: egbest2
  [C#.NET] سلسلة حلقات نضف كودك Devahmedsalim 1 2,625 10-10-17, 11:28 PM
آخر رد: nani49
  [سلسلة التحكم] {2} - التحكم بواسطة Remoting الشاكي لله 8 10,353 06-12-16, 04:22 PM
آخر رد: الشاكي لله
  [سلسلة التعامل مع الويب] تحليل الصفحات باستخدام HtmlAgilityPack الشاكي لله 9 7,024 25-09-16, 12:19 PM
آخر رد: ابراهيم كركوكي
  [سلسلة التحكم] {1} - طرق التحكم في البرامج الشاكي لله 7 8,111 12-02-16, 10:16 PM
آخر رد: nani49

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم