Función Curl() no trae datos - Php

Tengo una función creada para Php, donde extrae datos de determinada web. La función realiza el Logeo y la búsqueda de determinado producto por su código. Falla en la extracción de datos de la página, como por ej. Título, descripción, precio. Etc. Agradecería una guía el respecto, ya que desconozco el funcionamiento de este método.

if($login!="")
{
$file_txt = @fopen($file,"w");

for ($i=0; $i<count($codigos); $i++)
{
curl_setopt($ch, CURLOPT_URL, 'http://www.proveedor.com/others/IncoResults.jsp');
//curl_setopt($ch, CURLOPT_URL, 'http://www.proveedor.com/others/IncoResults.jsp?searchstr='.$codigos[$i]);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, "cmdaction=search&searchstr=".$codigos[$i]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch,CURLOPT_CONNECTTIMEOUT, 0);
$quest = curl_exec($ch);
if($quest != "")
{
$html = stristr($quest, '<article>');
if($html != "")
continue;
$hasta = stripos($html, '</article>');
$articulo = substr($html,0,$hasta + 10);
if(strpos($articulo, "Disponible en stock") === FALSE)
{
$temp = stristr($articulo,'http://www.proveedor.com/contentimg');
//if($temp !== FALSE)
if($temp === FALSE)
{
$articulo = $temp;
$hasta = stripos($articulo,'"');
$linkFoto = substr($articulo, 0, $hasta);
}
else $linkFoto = "";
$articulo = stristr($articulo,'<a href="http://www.proveedor.com/');
$articulo = stristr($articulo,'href="');
$hasta = stripos($articulo,'" >');
$linkProd = substr($articulo, 6, $hasta - 6);
$articulo = stristr($articulo,'>');
$hasta = stripos($articulo,"</a>");
$titulo = mb_convert_encoding(substr($articulo, 1, $hasta - 1),'UTF-8');
$articulo = stristr($articulo, '<span>U$S ');
$hasta4 = stripos($articulo, '</span>');
$precio = substr($articulo,10,$hasta4-10);
$precio = str_replace(".","",$precio);
$precio = str_replace(",",".",$precio);
/*
$countSep = substr_count($precio,',');
$lastDec = strrpos($precio,",");
if($lastDec !== false)
$precio = substr($precio,0,$lastDec).'.'.substr($precio,$lastDec + 1);
$precio = str_replace(",","",$precio);
*/
curl_setopt($ch, CURLOPT_URL, $linkProd);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch,CURLOPT_CONNECTTIMEOUT, 0);
$bufferProd = curl_exec($ch);
$dom = new DOMDocument();
@$dom->loadHTML($bufferProd);
$xpath = new DOMXPath($dom);
$linksFotosDesc = "";
do
{
$bufferProdTemp = stristr($bufferProd, 'largeimage:');
if($bufferProdTemp !== FALSE)
$bufferProd = $bufferProdTemp;
else break;
$hasta = stripos($bufferProd, "'}");
$linksFotosDesc = $linksFotosDesc.substr($bufferProd,13,$hasta-13).";";
$bufferProd = stristr($bufferProd, "'}");
}
while(true);
$divDesc = $xpath->evaluate("//span[@class='description']");
$descripcion = $dom->saveHTML($divDesc->item(0));
$linkFabricante="";
$line = $codigos[$i].'::::'.$titulo.'::::'.$precio.'::::'.$descripcion.'::::'.$linkFabricante.'::::'.$linkFoto.'::::'.$linksFotosDesc.'::::';
$text = $text.$codigos[$i].'::::'.$titulo.'::::'.$precio.'::::'.$descripcion.'::::'.urlencode($linkFabricante).'::::'.urlencode($linkFoto).'::::'.urlencode($linksFotosDesc).'::::';
@fwrite($file_txt,$line.PHP_EOL);
ob_flush();
echo '<br>'.$line;
}
}
}
@fclose($file_txt);
}
curl_close($ch);

ob_end_flush();
//echo '<span style="display: none" id="hd">'.$text.'</span>';

1 respuesta

Respuesta
1

Veo que seteas las opciones de cURl, pero no veo que lo inicializes antes de hacerlo.

$ch = curl_init();

En realidad si está, no me di cuenta en el copy/paste. Realmente y no quiero hacerle perder tiempo, pero resulta que comenzó a funcionar nuevamente y sin problemas, me queda el misterio del porqué no respondía anteriormente. Agradezco mucho su tiempo. Saludos cordiales.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas