Skip to main content

Python ctypes bindings for reliq

Project description

reliq-python

A python module for reliq library.

Requirements

Installation

pip install reliq

Import

from reliq import reliq

Usage

html = ""
with open('index.html','r') as f:
    html = f.read()

rq = reliq(html) #parse html
expr = reliq.expr(r"""
    div .user; {
        a href; {
            .name * l@[0] | "%i"
            .link * l@[0] | "%(href)v"
        },
        .score.u span .score,
        .info dl; {
            .key dt | "%i",
            .value dd | "%i"
        },
        .achievements.a li class=b>"achievement-" | "%i\n"
    }
""") #expressions can be compiled

users = []
links = []
images = []

#filter()
#   returns object holding list of results such object
#   behaves like an array, but can be converted to array
#   with either descendants() or children() methods

for i in rq.filter(r'table; tr').children()[:-2]:
    #"i"
    #   It has a set of functions for getting its properties:
    #       tag()           tag name
    #       insides()       string containing contents inside tag
    #       child_count()   count of children
    #       lvl()           level in html structure
    #       attribsl()      number of attributes
    #       attribs()       returns dictionary of attributes

    if i.child_count() < 3 and i[0].tag() == "div":
        continue

    #objects can be accessed as an array which is the same
    #as array returned by descendants() method
    link = i[5].attribs()['href']
    if re.match('^https://$',href):
        links.append(link)
        continue

    user = json.loads(i.search(expr))
    users.append(user)

#reliq objects have __str__ method
#get_data() returns data from which the html structure has been compiled

#if the second argument of filter() is True the returned
#object will use independent data, allowing garbage collector
#to free the previous unused data

#fsearch()
#   executes expression at parsing saving memory, and because
#   of that it supports only chain expressions i.e use of
#   grouping brackets and separating commas will throw an exception
for i in reliq.fsearch(r'ul; img src | "%(src)v\n"',html).split('\n')[:-1]:
    images.append(i)

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

reliq-0.0.4.tar.gz (42.0 kB view details)

Uploaded Source

Built Distribution

reliq-0.0.4-py3-none-any.whl (29.5 kB view details)

Uploaded Python 3

File details

Details for the file reliq-0.0.4.tar.gz.

File metadata

  • Download URL: reliq-0.0.4.tar.gz
  • Upload date:
  • Size: 42.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.1.dev0+g94f810c.d20240510 CPython/3.12.3

File hashes

Hashes for reliq-0.0.4.tar.gz
Algorithm Hash digest
SHA256 a6b31f0f77d0b6ffa09fbbc5cc00276db56ce28852a27fb8998ea08e92a509ae
MD5 efdf7e120727f3e07ccbac515ffb8195
BLAKE2b-256 ea976129c9497d44851ce0904c3ff4b6c13165afa0880b2d2c82eac769282ffc

See more details on using hashes here.

File details

Details for the file reliq-0.0.4-py3-none-any.whl.

File metadata

  • Download URL: reliq-0.0.4-py3-none-any.whl
  • Upload date:
  • Size: 29.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.1.dev0+g94f810c.d20240510 CPython/3.12.3

File hashes

Hashes for reliq-0.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 c0d9052fb7aa255f65f924f7993c93f76e7975cb1ca5646a52da1710cae57f60
MD5 bf13c53b998d18905a38d6929e214aed
BLAKE2b-256 6a6606537c2d76ecae1b7af238bf6439d8e8e03b79a96bc3008ac2353a6004f4

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