Descripción general
revolution/laravel-fullfeed es un paquete de Laravel que extrae el cuerpo de páginas web para lectores de feeds.Usando reglas por sitio (JSON), extrae el contenido necesario de cada artículo.
Esta funcionalidad se usaba originalmente en una aplicación privada de lector de feeds y se ha extraído y publicado como paquete.
Requisitos
- PHP >= 8.4 (usa
Dom\HTMLDocument) - Laravel >= 12.x
Instalación
Publicar el archivo de configuración y las definiciones de sitios
config/fullfeed.phpresources/fullfeed
Actualización automática del archivo de definiciones (composer post-update-cmd)
Si quieres que las definiciones de sitios se republiquen automáticamente al ejecutarcomposer update, añade lo siguiente en composer.json.
Uso básico
Testing
Puedes hacer stub del Facade conFullFeed::expects().
Archivos de reglas por sitio
items_all.json
items_all.json es la base para incorporar reglas del formato de LDRFullFeed (wedata).Livedoor Reader fue un servicio conocido en Japón, pero el propio servicio ya no existe y hoy sobreviven principalmente los datos de reglas como activo. FullFeed aprovecha este formato de datos histórico.
plus.json
plus.json es un ejemplo para añadir reglas propias.
Campos de configuración de las reglas
url: expresión regular que hace match con la URL objetivoselector: selector CSS (tiene prioridad sobrexpath)xpath: expresión XPathenc: codificación cuando se necesita conversión de charsetcallable: clase Extractor personalizada ejecutada como preprocesado (única o array)after_callable: clase Extractor ejecutada al final como postprocesado
Orden de ejecución de los Extractors como Pipeline
FullFeed encadena los Extractors por orden mediante el patrón Pipeline de Laravel.- Clases indicadas en
callable XPathExtractorSelectorExtractor- Clases indicadas en
after_callable
Extractors incorporados
RemoveElements
Elimina los elementos que coincidan con el selector indicado.ReplaceMatches
Sustituye las cadenas que coincidan con una expresión regular (se aplica sobre la cadena HTML).StripTags
Elimina etiquetas de forma equivalente astrip_tags().
Squish
Elimina espacios en blanco redundantes conStr::squish().
Añadir reglas propias
- Añade un archivo JSON en
resources/fullfeed. - Añádelo a
pathsenconfig/fullfeed.php.
data.url, se recomienda colocar los archivos adicionales al principio de paths.