النتائج 1 إلى 7 من 7

الموضوع: هل يمكن الحصول وسوم html بواسطة xpath ؟

  1. #1
    عضو نشيط جدا
    تاريخ التسجيل
    Apr 2008
    المشاركات
    361

    هل يمكن الحصول وسوم html بواسطة xpath ؟



    السلام عليكم،

    هل يمكن الحصول على وسوم html من محتوى صفحة باستعمال xpath ؟

    شكراً.







    __________________
    مجلتي الصغيرة


  2. #2
    عضو فعال
    تاريخ التسجيل
    Jun 2008
    المشاركات
    1,600


    نعم، في البداية تأخد محتوى الصفحة عن طريق كائن DOMDocument
    ثم تعمل كائن DOMXPath وتعطيه كبارمتر الكائن الأول الذي هو من نوع DOMDocument

    وبعدها تستعمل دالتي query أو evaluate للحصول على المحتويات التي تريدها
    عن طريق ال xpath،وال xpath لغة بسيطة مثل ال sql (لكن لنصوص ال xml)تحتاج لتعلم اوامرها

    بعد ان تظهر لك النتيجة تكون على شكل DOMNodeList تقوم بالمرور عليها عن طريق حلقة تكرار
    وتستخرج منها النتائج

    مصادر:
    http://php.net/manual/en/class.domdocument.php
    http://www.php.net/manual/en/class.domxpath.php
    http://www.php.net/manual/en/class.domnodelist.php
    http://www.w3schools.com/xpath/default.asp






  3. #3
    عضو نشيط جدا
    تاريخ التسجيل
    Apr 2008
    المشاركات
    361


    بارك الله فيك اخي احمد.

    وما هو البارامتر الذي يجب ان اعطيه للـ xpath ؛تى يجلب لي بعض tags او كلها من ديف معين مثلاً.

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

    شكراً.





    __________________
    مجلتي الصغيرة

  4. #4
    عضو نشيط جدا
    تاريخ التسجيل
    Apr 2008
    المشاركات
    361


    أخي احمد،

    بعد اطلاعي على الروابط الموضوع في الجواب السابق.

    قمت بوضع هذا المثال لجلب جزء من كود الصفحة : http://tiaret.comuv.com

    ويتعلق الامر بالموضوع ذو العنوان التالي :

    » باحثة جزائرية تخترع دواء لعلاج السرطان من الأعشاب

    ولكن كانت النتيجة فارغة ... لا ادري ما المشكلة ؟

    كود PHP:
    <?php

    $opts 
    = array(
      
    'http'=>array(
        
    'method'=>"GET",
        
    'header'=>"Accept-language: ar\r\n".
                  
    "Cookie: foo=bar\r\n"
                 
      
    )
    );

    $context stream_context_create($opts);

    $file file_get_contents('http://tiaret.comuv.com/'false$context);
    //echo $file;

    $DOMdoc = new DOMDocument();
    @
    $DOMdoc->loadHTML($file);

    $xpath = new DOMXpath($DOMdoc);

    $patt "/html/body/div/div/div/div[3]/table/tbody/tr/td[2]/table/tbody/tr[2]/td/div/center/center/center/center/center/table/tbody/tr/td/table/tbody/tr/td";

    $elements $xpath->query($patt$DOMdoc);


    if (!
    is_null($elements)) {
      foreach (
    $elements as $element) {
        echo 
    "<br/>["$element->nodeName"]";

        
    $nodes $element->childNodes;
        foreach (
    $nodes as $node) {
          echo 
    $node->nodeValue"\n";
        }
      }
    }
    ?>
    أرجو تجريب الكود وتصحيح الخطأ.

    شكراً.





    __________________
    مجلتي الصغيرة

  5. #5
    عضو نشيط جدا
    تاريخ التسجيل
    Apr 2008
    المشاركات
    361


    قرات في بعض المنتديات الاجنبية انه يمكن استعمال الـ namespace لاستخراج وسم الـ HTML مع نصوصها...

    ولكن لم افهم جيدا كيفية اللاستعمال ؟





    التعديل الأخير تم بواسطة apitos ; 23-07-2011 الساعة 06:21 PM
    __________________
    مجلتي الصغيرة

  6. #6
    عضو شرف
    تاريخ التسجيل
    Apr 2002
    المشاركات
    1,379


    http://code.google.com/p/phpquery/
    هذا الصنف يعمل عمل jquery اعتقد انه مفيد لاستخراج المعلومات ... بالرغم من اني افضل regular expression





    __________________
    ضيف الله العتيبي مبرمج حر و مهندس معتمد من زيند (ZCE)
    الاتصال: daif@daif.net او جوال: 0556639884
    الخدمات: تقديم استشارات برمجيه, تطوير بوابات/خدمات إلكترونيه للقطاع العام او الخاص .

  7. #7
    عضو نشيط جدا
    تاريخ التسجيل
    Apr 2008
    المشاركات
    361


    بالمناسبة هل من الممكن التعرف على الحل بالتعابير القياسية ؟





    __________________
    مجلتي الصغيرة





ضوابط المشاركة

  • لا تستطيع إضافة مواضيع جديدة
  • لا تستطيع الرد على المواضيع
  • لا تستطيع إرفاق ملفات
  • لا تستطيع تعديل مشاركاتك
  •  
اعلانات سوالف
0
أضف موقعك هنا | شقق للايجار في الكويت | بيوت للبيع في الكويت | دليل الكويت العقاري