Leer una web y extraer datos

  <?php

        function extrae($cadena, $inicio, $fin) {
            $pos = strpos($cadena, $inicio);
            if ($pos === false) {
                return "";
            }
            $pos2 = strpos($cadena, $fin, $pos + strlen($inicio));
            if ($pos2 === false) {
                return "";
            }
            return substr($cadena, $pos + strlen($inicio), $pos2 - $pos - strlen($inicio));
        }

        function extraeRegexp($cadena, $inicio, $fin) {
            preg_match_all('#' . $inicio . '(.*?)' . $fin . '#', $cadena, $matches);
            return $matches[1];
        }

        //Lee archivo y lo mete en un string
        $datos = file_get_contents("https://www.guiadelocio.com/teatro-y-danza");
        $pos = strpos($datos, "item-listado-AB");
        $items = [];
        while ($pos !== false) {
            $pos2 = strpos($datos, "</div>", $pos);
            $items[] = substr($datos, $pos, $pos2 - $pos);
            $pos = strpos($datos, "item-listado-AB", $pos + 1);
        }
        $fichero = fopen("teatro.csv", "a");
        foreach ($items as $item) {
            $titulo = strip_tags(extraeRegexp($item, 'alt="', '"')[0]);
            echo $titulo . "<br/>";
            $resto = strip_tags(extraeRegexp($item, '<p class="ubicacion">', '</p>')[0]);
            echo $resto . "<br/>";
            $resto = explode(",", $resto);
            print_r($resto);
            fwrite($fichero, utf8_decode(date("d-m-Y") . ";" . $titulo . ";" . 
                    $resto[0] . ";" . $resto[1] . "\n"));
        }
        fclose($fichero);
        //echo($datos);
        ?>

Publicado por

Juan Pablo Fuentes

Formador de programación y bases de datos