Skip to main content

lightweight, simple, and fast declarative XML and JSON data extraction

Project description

yankee_logo Documentation

PyPI PyPI - Python Versions PyPI - Downloads

Summary

Simple declarative data extraction and loading in Python, featuring:

  • 🍰 Ease of use: Data extraction is performed in a simple, declarative types.
  • XML / HTML / JSON Extraction: Extraction can be performed across a wide array of structured data
  • 🐼 Pandas Integration: Results are easily castable to Pandas Dataframes and Series.
  • 😀 Custom Output Classes: Results can be automatically loaded into autogenerated dataclasses, or custom model types.
  • 🚀 Performance: XML loading is supported by the excellent and fast lxml library, JSON is supported by UltraJSON for fast parsing, and jsonpath_ng for flexible data extraction.

Quick Start

To extract data from XML, use this import statement, and see the example below:

from yankee.xml.schema import Schema, fields as f, CSSSelector

To extract data from JSON, use this import statement, and see the example below:

from yankee.xml.schema import Schema, fields as f, JSONPath

To extract data from HTML, use this import statement:

from yankee.html.schema import Schema, fields as f, CSSSelector

To extract data from Python objects (either objects or dictionaries), use this import statement:

from yankee.base.schema import Schema, fields as f

Documentation

Complete documentation is available on Read The Docs

Examples

Extract data from XML

Data extraction from XML. By default, data keys are XPath expressions, but can also be CSS selectors.

Take this:

    <xmlObject>
        <name>Johnny Appleseed</name>
        <birthdate>2000-01-01</birthdate>
        <something>
            <many>
                <levels>
                    <deep>123</deep>
                </levels>
            </many>
        </something>
    </xmlObject>

Do this:

from yankee.xml.schema import Schema, fields as f, CSSSelector

class XmlExample(Schema):
    name = f.String("./name")
    birthday = f.Date(CSSSelector("birthdate"))
    deep_data = f.Int("./something/many/levels/deep")

XmlExample().load(xml_doc)

Get this:

{
    "name": "Johnny Appleseed",
    "birthday": datetime.date(2000, 1, 1),
    "deep_data": 123
}

Extract data from JSON

Data extraction from JSON. By default, data keys are implied from the field names, but can also be JSONPath expressions

Take this:

{
        "name": "Johnny Appleseed",
        "birthdate": "2000-01-01",
        "something": [
            {"many": {
                "levels": {
                    "deep": 123
                }
            }}
        ]
    }

Do this:

from yankee.json.schema import Schema, fields as f

class JsonExample(Schema):
    name = f.String()
    birthday = f.Date("birthdate")
    deep_data = f.Int("something.0.many.levels.deep")

Get this:

{
    "name": "Johnny Appleseed",
    "birthday": datetime.date(2000, 1, 1),
    "deep_data": 123
}

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

yankee-0.1.44.tar.gz (89.0 kB view details)

Uploaded Source

Built Distribution

yankee-0.1.44-py3-none-any.whl (103.2 kB view details)

Uploaded Python 3

File details

Details for the file yankee-0.1.44.tar.gz.

File metadata

  • Download URL: yankee-0.1.44.tar.gz
  • Upload date:
  • Size: 89.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.6.1 CPython/3.11.4 Darwin/22.6.0

File hashes

Hashes for yankee-0.1.44.tar.gz
Algorithm Hash digest
SHA256 abe3159012e2b95a711e3ad9825c4855bd90a603959883ff418672142a987b18
MD5 aaca6e696b4a45c424dabb05b49851f6
BLAKE2b-256 f7a7752092a7830545b3dcc0e20e0be617d19981021d634b92b12900462f2bd4

See more details on using hashes here.

File details

Details for the file yankee-0.1.44-py3-none-any.whl.

File metadata

  • Download URL: yankee-0.1.44-py3-none-any.whl
  • Upload date:
  • Size: 103.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.6.1 CPython/3.11.4 Darwin/22.6.0

File hashes

Hashes for yankee-0.1.44-py3-none-any.whl
Algorithm Hash digest
SHA256 53848b7a84220e1b511b8da4ea5852ba63040139fbf662cc508032dd00ccaa25
MD5 3904360197a0cfef3b5c551116ca3c46
BLAKE2b-256 65962dff7821c1dee356e6b0632ec639e6acd169b63ca13e9208bc1371d81e6e

See more details on using hashes here.

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