phpcfdi/sat-pys-scraper

用于获取和生成SAT产品和服务目录分类列表的工具

v3.0.0 2024-03-08 02:31 UTC

This package is auto-updated.

Last update: 2024-09-17 20:27:46 UTC


README

Source Code PHP Version Latest Version Software License Build Status Reliability Maintainability Code Coverage Violations Total Downloads

用于获取和生成SAT产品和服务目录分类列表的工具

🇺🇸 本项目的文档使用西班牙语,因为这是目标受众的自然语言。

可能你需要的只是SAT产品和服务分类列表,如果是这样,最好使用资源phpcfdi/resources-pys,其中的列表会自动更新。

关于 phpcfdi/sat-pys-scraper

SAT在其网站http://pys.sat.gob.mx/PyS/catPyS.aspx上发布了一个产品和服务分类。这个分类不属于官方目录,并且没有在任何地方公开。

这个工具对该网站进行了抓取,以获取4级分类:类型、段、家族和类别。同样,结构可以导出为XML或JSON格式。

使用composer安装

与其他库或组件不同,此项目是一个工具,因此你可能永远不需要将其作为依赖项安装。然而,你可以这样做,以便执行从SAT网站获取分类的部分,但你需要自己处理结构并用于自己的目的,例如,存储在数据库中。

composer require phpcfdi/sat-pys-scraper

使用Docker安装

此项目提供了一个Dockerfile文件来构建包含所有依赖项的镜像。可以使用此镜像进行本地运行,有关更多信息,请参阅文件README.Docker.md

# clonado del proyecto
git clone https://github.com/phpcfdi/sat-pys-scraper.git

# construcción de la imagen de Docker
docker build -t sat-pys-scraper sat-pys-scraper/

# ejecución de la herramienta
docker run -it --rm sat-pys-scraper --help

sat-pys-scraper(脚本)帮助

sat-pys-scraper - Crea un archivo con la clasificación de productos y servicios del SAT.

Sintaxis:
    sat-pys-scraper help|-h|--help
    sat-pys-scraper [--quiet|-q] [--json|-j JSON_FILE] [--xml|-x XML_FILE]

Argumentos:
    --xml|-x XML_FILE
        Establece el nombre de archivo, o "-" para la salida estándar, donde se envían
        los datos generados en formato XML.
    --json|-j JSON_FILE
        Establece el nombre de archivo, o "-" para la salida estándar, donde se envían
        los datos generados en formato JSON.
    --sort|-s SORT
        Establece el orden de elementos, default: key, se puede usar "key" o "name".
    --quiet|-q
        Modo de operación silencioso.

Notas:
    Debe especificar al menos un argumento "--xml" o "--json", o ambos.
    No se puede especificar "-" como salida de "--xml" y "--json" al mismo tiempo.

Acerca de:
    Este script pertenece al proyecto https://github.com/phpcfdi/sat-pys-scraper
    y mantiene la autoría y licencia de todo el proyecto.

使用工具

如果你要使用工具的代码,那么重要的是要理解这个任务涉及两个步骤

  1. 从SAT网站获取类型、段、家族和类别的列表。
  2. 将列表导出到特定格式。

为了生成类型、段、家族和类别的列表,使用Generator对象,该对象又使用Scraper对象来下载信息,而Scraper对象又使用GuzzleHttpClient对象。

以下示例显示了如何生成结构并遍历其元素。

  • 执行Generator::generate()返回一个类型为Types的对象。
  • 使用foreach遍历结构。
  • 可以使用XmlExporter::export()导出。
<?php
use GuzzleHttp\Client;
use PhpCfdi\SatPysScraper\Generator;
use PhpCfdi\SatPysScraper\Scraper;
use PhpCfdi\SatPysScraper\XmlExporter;

$scraper = new Scraper(new Client());
$generator = new Generator($scraper);
$types = $generator->generate();
$types->sortByKey();

foreach ($types as $type) {
    printf("Tipo: %s - %s\n", $type->key, $type->name);
    foreach ($type as $segment) {
        printf("  Segmento: %s - %s\n", $segment->key, $segment->name);
        foreach ($segment as $family) {
            printf("    Familia: %s - %s\n", $family->key, $family->name);
            foreach ($family as $class) {
                printf("      Clase: %s - %s\n", $class->key, $class->name);
            }
        }
    }
}

$exporter = new XmlExporter();
$exporter->export('output.xml', $types);

数据类型

Types对象是一个类型为Type的对象的可迭代集合。一个Type对象包含属性keyname,并且也是一个类型为Segment的对象的可迭代集合。一个Segment对象包含属性keyname,并且也是一个类型为Family的对象的可迭代集合。一个Family对象包含属性keyname,并且也是一个类型为Classification的对象的可迭代集合。一个Classification对象只包含属性keyname

所有数据对象都实现了JsonSerializable接口,因此你可以使用该特性来导出为JSON格式。

支持

你可以通过在Github上提交工单来获取支持。

此外,这个库属于PhpCfdi社区,因此你可以通过官方通讯渠道获取社区的帮助。

兼容性

这个库将保持与最新支持版本的PHP至少兼容(请参考PHP支持版本)。

我们还使用了语义化版本2.0.0,因此你可以放心使用这个库而不用担心破坏你的应用程序。

贡献

欢迎贡献。请阅读CONTRIBUTING获取更多详情,并记得检查待办事项TODO和变更日志CHANGELOG文件。

版权和许可证

phpcfdi/sat-pys-scraper工具版权© PhpCfdi,并许可在MIT许可证(MIT)下使用。请参阅LICENSE获取更多信息。