السلام عليكم،
هل يمكن الحصول على وسوم html من محتوى صفحة باستعمال xpath ؟
شكراً.
السلام عليكم،
هل يمكن الحصول على وسوم html من محتوى صفحة باستعمال xpath ؟
شكراً.
__________________
مجلتي الصغيرة
نعم، في البداية تأخد محتوى الصفحة عن طريق كائن 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
بارك الله فيك اخي احمد.
وما هو البارامتر الذي يجب ان اعطيه للـ xpath ؛تى يجلب لي بعض tags او كلها من ديف معين مثلاً.
لان حسب علمي فان الناتج سيكون دائما عبارة عن نص فقط.
شكراً.
__________________
مجلتي الصغيرة
أخي احمد،
بعد اطلاعي على الروابط الموضوع في الجواب السابق.
قمت بوضع هذا المثال لجلب جزء من كود الصفحة : 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";
}
}
}
?>
شكراً.
__________________
مجلتي الصغيرة
قرات في بعض المنتديات الاجنبية انه يمكن استعمال الـ namespace لاستخراج وسم الـ HTML مع نصوصها...
ولكن لم افهم جيدا كيفية اللاستعمال ؟
التعديل الأخير تم بواسطة apitos ; 23-07-2011 الساعة 06:21 PM
__________________
مجلتي الصغيرة
http://code.google.com/p/phpquery/
هذا الصنف يعمل عمل jquery اعتقد انه مفيد لاستخراج المعلومات ... بالرغم من اني افضل regular expression
__________________
ضيف الله العتيبي مبرمج حر و مهندس معتمد من زيند (ZCE)
الاتصال: daif@daif.net او جوال: 0556639884
الخدمات: تقديم استشارات برمجيه, تطوير بوابات/خدمات إلكترونيه للقطاع العام او الخاص .
بالمناسبة هل من الممكن التعرف على الحل بالتعابير القياسية ؟
__________________
مجلتي الصغيرة