Hola amigos de FDW!!!, estoy desarrollando un webcrawler, y se me presentó el siguiente problema, no puedo extraer una descripción y keywords de un artículo de wikipedia.
Lo que hace el código es extraer en caso de que la meta descripción y meta keywords no exista, el primer parrafo para la descripción y las bold, italica y h1 para las keys.
Pero en la base de datos en la seccion de keywords me guarda "Array Array Array" y en la descripción, directamente en blanco.
Esta es la parte del código que creo que está fallando:
Código PHP:
function saveUrl($url, $prof, $patron, $html) {
$retorno = false;
$pos = strpos($url, $patron);
if ($prof >= 1) {
preg_match_all("(<title>(.*)<\/title>)siU", $html, $title);
$metas = get_meta_tags($url, 1);
$title = $title[1][0];
$titulo = html_entity_decode($title, ENT_QUOTES, 'UTF-8');
$descripcion = isset($metas["description"])?$metas["description"] : '';
$keywords = isset($metas["keywords"])?$metas["keywords"] : '';
if (empty($descripcion)){
obtenerMetaDescription($html);
}
if (empty($keywords)){
preg_match_all("#<\s*h1[^>]*>[^<]+</h1>#is", $html, $encabezado);
preg_match_all("#<\s*b[^>]*>[^<]+</b>#is", $html, $negrita);
preg_match_all("#<\s*i[^>]*>[^<]+</i>#is", $html, $italica);
if(!empty($encabezado)){
$h1 = $encabezado[0];
}
if(!empty($negrita)){
$bold = $negrita[0];
}
if(!empty($italica)){
$italic = $italica[0];
}
$keys .= $bold;
$keys .= " ";
$keys .= $h1;
$keys .= " ";
$keys .= $italic;
$keywords = substr(strip_tags($keys), 0, 200);
}
storeLink($titulo, $descripcion, $url, $keywords, $prof);
$retorno = true;
}
return $retorno;
}
function obtenerMetaDescription($html) {
preg_match_all('#<p>(.*)</p>#Us', $html, $parraf);
if(!empty($parraf)){
$descripcion = substr(strip_tags($parraf[1][0]), 0, 200);
}
}
No entiendo bien porque no extrae las keywords y a la descripción, ¿Cómo puedo solucionar el problema?
Saludos y gracias!