Skip to main content

Biblioteca para extração de dados em documentos

Project description

https://api.travis-ci.org/fgmacedo/raspador.png?branch=master https://coveralls.io/repos/fgmacedo/raspador/badge.png https://pypip.in/v/raspador/badge.png https://pypip.in/d/raspador/badge.png

Biblioteca para extração de dados em documentos semi-estruturados.

A definição dos extratores é feita através de classes como modelos, de forma semelhante ao ORM do Django. Cada extrator procura por um padrão especificado por expressão regular, e a conversão para tipos primitidos é feita automaticamente a partir dos grupos capturados.

O analisador é implementado como um gerador, onde cada item encontrado pode ser consumido antes do final da análise, caracterizando uma pipeline.

A análise é foward-only, o que o torna extremamente rápido, e deste modo qualquer iterador que retorne uma string pode ser analisado, incluindo streams infinitos.

Com uma base sólida e enxuta, é fácil construir seus próprios extratores.

Além da utilidade da ferramenta, o raspador é um exemplo prático e simples da utilização de conceitos e recursos como iteradores, geradores, meta-programação e property-descriptors.

Compatibilidade e dependências

O raspador é compatível com Python 2.6, 2.7, 3.2, 3.3 e pypy.

Desenvolvimento realizado em Python 2.7.5 e Python 3.2.3.

Não há dependências externas.

Testes

Os testes dependem de algumas bibliotecas externas:

coverage==3.6
nose==1.3.0
flake8==2.0
invoke==0.5.0

Você pode executar os testes com nosetests:

$ nosetests

E adicionalmente, verificar a compatibilidade com o PEP8:

$ flake8 raspador testes

Ou por conveniência, executar os dois em sequência com invoke:

$ invoke test

Exemplos

Extrator de dados em logs

import json
from raspador import Analizador, CampoString

out = """
PART:/dev/sda1 UUID:423k34-3423lk423-sdfsd-43 TYPE:ext4
PART:/dev/sda2 UUID:74928389-852893-sdfdf-g8 TYPE:ext4
PART:/dev/sda3 UUID:sdkj9d93-sdf9df-3kr3l-d8 TYPE:swap
"""


class AnalizadorDeLog(Analizador):
    inicio = r'^PART.*'
    fim = r'^PART.*'
    PART = CampoString(r'PART:([^\s]+)')
    UUID = CampoString(r'UUID:([^\s]+)')
    TYPE = CampoString(r'TYPE:([^\s]+)')


a = AnalizadorDeLog()

# res é um gerador
res = a.analizar(linha for linha in out.splitlines())

print (json.dumps(list(res), indent=2))

# Saída:
"""
[
  {
    "PART": "/dev/sda1",
    "TYPE": "ext4",
    "UUID": "423k34-3423lk423-sdfsd-43"
  },
  {
    "PART": "/dev/sda2",
    "TYPE": "ext4",
    "UUID": "74928389-852893-sdfdf-g8"
  },
  {
    "PART": "/dev/sda3",
    "TYPE": "swap",
    "UUID": "sdkj9d93-sdf9df-3kr3l-d8"
  }
]
"""

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

raspador-0.1.3.tar.gz (7.8 kB view hashes)

Uploaded Source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page