
Research
Security News
Malicious npm Packages Use Telegram to Exfiltrate BullX Credentials
Socket uncovers an npm Trojan stealing crypto wallets and BullX credentials via obfuscated code and Telegram exfiltration.
Convert a HTML webpage to JSON data using a template defined in JSON.
This package is available on PyPi. Just use pip install -U html2json
to install it. Then you can import it using from html2json import collect
.
The method is collect(html, template)
. html
is the HTML of page loaded as string, and template
is the JSON of template loaded as Python objects.
Note that the HTML must contain the root node, like <html>...</html>
or <div>...</div>
.
| For detailed syntax examples, please refer to unit tests (with 100% coverage).
The basic syntax is keyName: [selector, attr, [listOfRegexes]]
.
1. selector
is a CSS selector (supported by lxml).
- When the selector is null
, the root node itself is matched.
- When the selector cannot be matched, null
is returned.
- When the selector matches single element, a string is returned.
- When the selector matches multiple elements, a list of string is returned.
2. attr
matches the attribute value. It can be null
to match either the inner text or the outer text when the inner text is empty.
3. The list of regexes [listOfRegexes]
supports two forms of regex operations. The operations with in the list are executed sequentially.
- Replacement: s/regex/replacement/g
. g
is optional for multiple replacements.
- Extraction: /regex/
.
- Note that you can use any character as separator instead of /
.
For example:
{
"Color": ["head link:nth-of-type(1)", "href", ["/\\w+(?=\\.css)/"]],
}
Starting version 0.3.1, besides value, key can also matched like "[selector, ...]": ...
. Note that key must be a string for valid JSON.
Starting version 0.3.1, you can also replace certain part of value's selector with current key using syntax ...{key}...
. This is especially useful when key is dynamic.
As JSON, nested structure can be easily constructed.
{
"Cover": {
"URL": [".cover img", "src", []],
"Number of Favorites": [".cover .favorites", "value", []]
},
}
An alternative simplified syntax keyName: [subRoot, subTemplate]
can be used.
1. subRoot
a CSS selector of the new root for each sub entry.
2. subTemplate
is a sub-template for each entry, recursively.
For example, the previous example can be simplified as follow.
{
"Cover": [".cover", {
"URL": ["img", "src", []],
"Number of Favorites": [".favorites", "value", []]
}],
}
To extract a list of sub-entries following the same sub-template, the list syntax is keyName: [[subRoot, subTemplate]]
. Please note the difference (surrounding [
and ]
) from the previous syntax above.
1. subRoot
is the CSS selector of the new root for each sub entry.
2. subTemplate
is the sub-template for each entry, recursively.
For example:
{
"Comments": [[".comments", {
"From": [".from", null, []],
"Content": [".content", null, []],
"Photos": [["img", {
"URL": ["", "src", []]
}]]
}]]
}
FAQs
Parsing HTML to JSON
We found that html2json demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
Socket uncovers an npm Trojan stealing crypto wallets and BullX credentials via obfuscated code and Telegram exfiltration.
Research
Security News
Malicious npm packages posing as developer tools target macOS Cursor IDE users, stealing credentials and modifying files to gain persistent backdoor access.
Security News
AI-generated slop reports are making bug bounty triage harder, wasting maintainer time, and straining trust in vulnerability disclosure programs.