node example ejemplo child php curl domdocument

php - example - Obtener Element por ClassName con el método DOMdocument()



php dom child node (2)

Esto es lo que estoy tratando de lograr: recuperar todos los productos en una página y ponerlos en una matriz. Aquí está el código que estoy usando:

$page2 = curl_exec($ch); $doc = new DOMDocument(); @$doc->loadHTML($page2); $nodes = $doc->getElementsByTagName(''title''); $noders = $doc->getElementsByClassName(''productImage''); $title = $nodes->item(0)->nodeValue; $product = $noders->item(0)->imageObject.src;

Funciona para el $title but no para el producto. Para obtener información, en el código HTML, la etiqueta img se ve así:

<img alt="" class="productImage" data-altimages="" src="xxxx">

He estado viendo esto ( PHP DOMDocument ¿cómo obtener el elemento? ), Pero todavía no entiendo cómo hacerlo funcionar.

PD: obtengo este error:

Llamada al método indefinido DOMDocument::getElementsByclassName()


Finalmente utilicé la siguiente solución:

$classname="blockProduct"; $finder = new DomXPath($doc); $spaner = $finder->query("//*[contains(@class, ''$classname'')]");


https://.com/a/31616848/3068233

Vincular esta respuesta ya que me ayudó más con este problema.

function getElementsByClass(&$parentNode, $tagName, $className) { $nodes=array(); $childNodeList = $parentNode->getElementsByTagName($tagName); for ($i = 0; $i < $childNodeList->length; $i++) { $temp = $childNodeList->item($i); if (stripos($temp->getAttribute(''class''), $className) !== false) { $nodes[]=$temp; } } return $nodes; }

Aquí está el código y aquí está el uso

$dom = new DOMDocument(''1.0'', ''utf-8''); $dom->loadHTML($html); $content_node=$dom->getElementById("content_node"); $div_a_class_nodes=getElementsByClass($content_node, ''div'', ''a'');