myhtml
Version, currently 1.5.947 versions
- 1.5.9latestApr 15, 2025
- 1.5.8not indexedApr 15, 2025
- 1.5.7not indexedApr 15, 2025
- 1.5.6not indexedApr 15, 2025
- 1.5.5not indexedApr 15, 2025
- 1.5.4not indexedApr 15, 2025
- 1.5.3not indexedApr 15, 2025
- 1.5.2not indexedApr 15, 2025
- 1.5.1not indexedApr 15, 2025
- 1.5.0not indexedApr 15, 2025
- 1.4.2not indexedApr 15, 2025
- 1.4.1not indexedApr 15, 2025
- 1.4.0not indexedApr 15, 2025
- 1.3.0not indexedApr 15, 2025
- 1.2.0not indexedApr 15, 2025
- 1.1.0not indexedApr 15, 2025
- 1.0.0not indexedApr 15, 2025
- 0.30not indexedApr 15, 2025
- 0.29not indexedApr 15, 2025
- 0.28not indexedApr 15, 2025
- 0.27not indexedApr 15, 2025
- 0.26not indexedApr 15, 2025
- 0.25not indexedApr 15, 2025
- 0.24not indexedApr 15, 2025
- 0.23not indexedApr 15, 2025
- 0.22not indexedApr 15, 2025
- 0.21not indexedApr 15, 2025
- 0.20not indexedApr 15, 2025
- 0.19not indexedApr 15, 2025
- 0.18not indexedApr 15, 2025
- 0.17not indexedApr 15, 2025
- 0.16.1not indexedApr 15, 2025
- 0.16not indexedApr 15, 2025
- 0.15not indexedApr 15, 2025
- 0.14not indexedApr 15, 2025
- 0.13.1not indexedApr 15, 2025
- 0.12not indexedApr 15, 2025
- 0.11not indexedApr 15, 2025
- 0.10.2not indexedApr 15, 2025
- 0.10.1not indexedApr 15, 2025
- 0.10not indexedApr 15, 2025
- 0.9not indexedApr 15, 2025
- 0.8not indexedApr 15, 2025
- 0.7not indexedApr 15, 2025
- 0.6not indexedApr 15, 2025
- 0.5not indexedApr 15, 2025
- v.0.13not indexedApr 15, 2025
github.com/kostya/myhtml
Fast HTML5 Parser with css selectors for Crystal language
158 stars
24 dependents
License: MIT
Installation
# Add this to your shard.yml
dependencies:
myhtml:
github: kostya/myhtml
version: ~> 1.5.9Then run:
shards installshard.yml
- Crystal
>= 1.0.0, < 2.0.0- License
- MIT
- Author
- Konstantin Makarchev
Dependencies
This version declares no dependencies.
README
MyHTML
Fast HTML5 Parser (Crystal binding for awesome lexborisov's myhtml and Modest). This shard used in production to parse millions of pages per day, very stable and fast.
WARNING: original libraries (myhtml and Modest) not maintained since july 2020, i recommend switch to successor parser: Lexbor.
Installation
Add this to your application's shard.yml:
dependencies:
myhtml:
github: kostya/myhtml
And run shards install
Usage example
require "myhtml"
html = <<-HTML
<html>
<body>
<div id="t1" class="red">
<a href="/#">O_o</a>
</div>
<div id="t2"></div>
</body>
</html>
HTML
myhtml = Myhtml::Parser.new(html)
myhtml.nodes(:div).each do |node|
id = node.attribute_by("id")
if first_link = node.scope.nodes(:a).first?
href = first_link.attribute_by("href")
link_text = first_link.inner_text
puts "div with id #{id} have link [#{link_text}](#{href})"
else
puts "div with id #{id} have no links"
end
end
# Output:
# div with id t1 have link [O_o](/#)
# div with id t2 have no links
Css selectors example
require "myhtml"
html = <<-HTML
<html>
<body>
<table id="t1">
<tr><td>Hello</td></tr>
</table>
<table id="t2">
<tr><td>123</td><td>other</td></tr>
<tr><td>foo</td><td>columns</td></tr>
<tr><td>bar</td><td>are</td></tr>
<tr><td>xyz</td><td>ignored</td></tr>
</table>
</body>
</html>
HTML
myhtml = Myhtml::Parser.new(html)
p myhtml.css("#t2 tr td:first-child").map(&.inner_text).to_a
# => ["123", "foo", "bar", "xyz"]
p myhtml.css("#t2 tr td:first-child").map(&.to_html).to_a
# => ["<td>123</td>", "<td>foo</td>", "<td>bar</td>", "<td>xyz</td>"]
More Examples
Development Setup:
git clone https://github.com/kostya/myhtml.git
cd myhtml
make
crystal spec
Benchmark
Parse 1000 times google page(600Kb), and 1000 times css select. myhtml-program, crystagiri-program, nokogiri-program
| Lang | Shard | Lib | Parse time, s | Css time, s | Memory, MiB |
|---|---|---|---|---|---|
| Crystal | lexbor | lexbor | 2.54 | 0.099 | 7.8 |
| Crystal | myhtml | myhtml(+modest) | 3.17 | 0.16 | 8.4 |
| Ruby 2.7 | Nokogiri | libxml2 | 9.19 | 10.76 | 139.8 |
| Crystal | Crystagiri | libxml2 | 11.27 | - | 25.0 |
Documentation
Built from the current release. The first visit to a release nobody has asked for starts its build.
Links
This release
- Version
1.5.9- Tagged
- Apr 15, 2025
- Commit
53b8e6ac62a6- Crystal
>= 1.0.0, < 2.0.0- Indexed
- yes
Dependents
and 12 more
Repository
github.com/kostya/myhtml
Metadata
- Created
- Aug 12, 2026
- Updated
- Sep 26, 2026
- Synced
- Sep 23, 2026
- Versions
- 47