Instead of the second query try textContent
foreach ($arts as $art) {
echo $art->textContent;
}
textContent returns the text content of this node and its descendants.
Alternatively, change XPath to
$expression="//div[@class='thebest']/span[@class='title' or @class='desc']";
$arts = $xpath->query($expression);
foreach ($arts as $art) {
echo $art->nodeValue;
}
This will allow you to get children of the span div with thebest class having a header class or desc.