2011-06-07 6 views
6

मैं एक ऐसी स्क्रिप्ट बनाने की कोशिश कर रहा हूं जो नवीनतम समाचार अपडेट पुनर्प्राप्त करने के लिए वेबसाइट को स्क्रैप करता है। दुर्भाग्य से मैंने एक छोटी सी समस्या में भाग लिया है जिसे मैं डोम के सीमित ज्ञान के साथ ठीक नहीं कर सकता।PHP डोमोडोड: न केवल पाठ को निकालने के लिए, लेकिन HTML टैग भी

पेज मैं स्क्रैप करने का बनाया गया है इस प्रकार है कोशिश कर रहा हूँ:

<table> 
<tr class="color1"> 
<td>Author</td> 
<td>Content <a href="#">in HTML</a></td> 
<td>Date</td> 
</tr> 
</table> 

मैं खेतों मैं ठीक की जरूरत है, सामग्री के अलावा प्राप्त कर सकते हैं। $ Td- साथ> nodeValue मैं, पाठ के रूप में सामग्री प्राप्त कर सकते हैं, जबकि मैं इसे HTML में चाहते हैं (वहाँ वहाँ में 'एक' टैग, 'ब्लॉककोट', आदि)

कोड यह मेरे पास है:

try { 
    $html = @ file_get_contents("test.php"); 
    checkIfFileExists($html); 

    $dom = new DOMDocument(); 
    @ $dom->loadHTML($html); 

    $trNodes = $dom->getElementsByTagName("tr"); 
    foreach ($trNodes as $tr) { 

     if ($tr->getAttribute("class") == "color1" || $tr->getAttribute("class") == "color2") { 

     $tdNodes = $tr->childNodes; 
     foreach ($tdNodes as $td) { 

      echo $td->nodeValue . "<br />\n"; 

     } 
     echo "<br /><br /><br /><br /><br />\n"; 
    } 
} catch(Exception $e) { 
    echo $e->getMessage(); 
} 

मैं किसी तीसरे पक्ष की लाइब्रेरी का सहारा लेना नहीं चाहता, लेकिन जाहिर है कि किसी भी उत्तर की सबसे सराहना की जाती है, पुस्तकालय या नहीं।

अग्रिम धन्यवाद।

उत्तर

4

echo $td->nodeValue . "<br />\n"; 

की जगह

echo $dom->saveXML($td) . "<br />\n"; 
+0

कि चाल किया था, बहुत बहुत शुक्रिया के साथ! – Steven