https://github.com/bharat23/wpt-parser
A python package to fetch and extract test results from Webpagetest, speed curve and other webpagetest backed products.
https://github.com/bharat23/wpt-parser
json parser python3 speedcurve webpagetest
Last synced: 3 months ago
JSON representation
A python package to fetch and extract test results from Webpagetest, speed curve and other webpagetest backed products.
- Host: GitHub
- URL: https://github.com/bharat23/wpt-parser
- Owner: Bharat23
- License: mit
- Created: 2020-05-18T21:48:09.000Z (about 5 years ago)
- Default Branch: master
- Last Pushed: 2022-12-08T09:55:44.000Z (over 2 years ago)
- Last Synced: 2025-02-28T00:42:51.272Z (4 months ago)
- Topics: json, parser, python3, speedcurve, webpagetest
- Language: Python
- Homepage: https://pypi.org/project/wpt-parser/
- Size: 1.27 MB
- Stars: 1
- Watchers: 2
- Forks: 1
- Open Issues: 1
-
Metadata Files:
- Readme: README.MD
- Contributing: CONTRIBUTING.MD
- License: LICENSE
Awesome Lists containing this project
README
# WPT Parser
[](https://badge.fury.io/py/wpt-parser)
[](https://github.com/Bharat23/wpt-parser/actions/workflows/python-publish.yml)- ## [Getting Started](#getting-started)
* [Prerequiste](#prerequiste)
* [Installation](#installation)
* [Examples](#example)
* [Key Types](#key-type)
- ## [Available Methods](#available-methods)## Getting Started
- ### Prerequisites
- Python >= 3.6.x
- pip- ### Installation
```
$ pip install wpt-parser
```- ### Examples
- Using the JSON Parser
```
# import the class
from WPTParser.Fetch import Fetch
from WPTParser.JSONParser import JSONParser
test_json = Fetch().json()
keys = ['data.median.firstView.loadTime',]
# returns a new dict with specified keys
JSONParser(test_json).pick(keys=keys).exec()```
- ### Key Types:
- #### key_name
- Works like simple JSON extraction. Provide the name of the key and boom!.
- For extraction from beyond first level, append keys with a separator and provide `key_delimiter` for the program to recognize the start of next level.
- Example:
```
"""
{
keylevel11: {
keylevel21: value,
keylevel22: {
keylevel31: value
}
}
}
"""
# key to extract first level
# keylevel11
# returns {keylevel21: ...}# key to extract second level, first key
# keylevel11.keylevel21
# returns value
```
- #### [list_index]
- When you have a list as value and you want to extract a specific index value/object.
- For extraction from beyond first level, append keys with a separator and provide `key_delimiter` for the program to recognize the start of next level.
- Example:
```
"""
{
keylevel11: {
keylevel21: [
1, 2, 3
],
keylevel22: {
keylevel31: value
}
}
}
"""
# key to extract second level, third index
# keylevel11.keylevel21.[2]
# returns 3
```
- #### [{key=value}]
- When you have a unordered list of object and you want extract a specific object from the list based on the key and value inside the object
- For extraction from beyond first level, append keys with a separator and provide `key_delimiter` for the program to recognize the start of next level.
- Example:
```
"""
{
keylevel11: {
keylevel21: [
1, 2, 3
],
keylevel22: {
keylevel31: value
},
keylevel23: [
{
name: Awesome,
},
{
name: Package
}
]
}
}
"""
# key to extract second level, and from that extarct the object with name = Awesome
# keylevel11.keylevel23.[{name=Awesome}]
# return {name: Awesome}
```
- #### [{key~regex}]
- When you have a unordered list of object and you want extract a specific object from the list based on the key and a regex of value inside the object
- For extraction from beyond first level, append keys with a separator and provide `key_delimiter` for the program to recognize the start of next level.
- The regex search is case sensitive. You do not need to add `//` or `r''` to write your regex.
- The search will find all the matches and return a list
- Example:
```
"""
{
keylevel11: {
keylevel21: [
1, 2, 3
],
keylevel22: {
keylevel31: value
},
keylevel23: [
{
name: Awesome123,
},
{
name: Package
}
]
}
}
"""
# key to extract second level, and from that extarct the object with name matching Awesome
# keylevel11.keylevel23.[{name~Awesome}]
# return [{name: Awesome}]
```### Available Methods
- JSONParser
| Method | Params | type | default | Description
| --- | --- | --- | --- | --- |
| pick | key | str | None | selects a key to be returned
| pick | keys | list | [] | selects a list key to be returned
| pick | key_delimiter | str | "." | Separator used to identify multi level JSON
| pick | key_mapping | dict | {} | Mapping of keys for picking with custom key name.- Fetch
| Method | Params | type | default | Description
| --- | --- | --- | --- | --- |
| json | test_id | str | None | test_id for a wpt or a speed curve test
| json | WPT_URI | str | 'https://webpagetest.org' | URI for your WPT instance### Note:
- The package is under development and will be prone to more frequent updates