phpcfdi / sat-pys-scraper
用于获取和生成SAT产品和服务目录分类列表的工具
Requires
- php: >=8.2
- ext-dom: *
- guzzlehttp/guzzle: ^7.8
- symfony/css-selector: ^7.0
- symfony/dom-crawler: ^7.0
Requires (Dev)
- phpunit/phpunit: ^10.5
This package is auto-updated.
Last update: 2024-09-17 20:27:46 UTC
README
用于获取和生成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.
使用工具
如果你要使用工具的代码,那么重要的是要理解这个任务涉及两个步骤
- 从SAT网站获取类型、段、家族和类别的列表。
- 将列表导出到特定格式。
为了生成类型、段、家族和类别的列表,使用Generator
对象,该对象又使用Scraper
对象来下载信息,而Scraper
对象又使用GuzzleHttp
的Client
对象。
以下示例显示了如何生成结构并遍历其元素。
- 执行
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
对象包含属性key
和name
,并且也是一个类型为Segment
的对象的可迭代集合。一个Segment
对象包含属性key
和name
,并且也是一个类型为Family
的对象的可迭代集合。一个Family
对象包含属性key
和name
,并且也是一个类型为Classification
的对象的可迭代集合。一个Classification
对象只包含属性key
和name
。
所有数据对象都实现了JsonSerializable
接口,因此你可以使用该特性来导出为JSON格式。
支持
你可以通过在Github上提交工单来获取支持。
此外,这个库属于PhpCfdi社区,因此你可以通过官方通讯渠道获取社区的帮助。
兼容性
这个库将保持与最新支持版本的PHP至少兼容(请参考PHP支持版本)。
我们还使用了语义化版本2.0.0,因此你可以放心使用这个库而不用担心破坏你的应用程序。
贡献
欢迎贡献。请阅读CONTRIBUTING获取更多详情,并记得检查待办事项TODO和变更日志CHANGELOG文件。
版权和许可证
phpcfdi/sat-pys-scraper
工具版权© PhpCfdi,并许可在MIT许可证(MIT)下使用。请参阅LICENSE获取更多信息。