As it is possible to access nodes created by \special commands, we can access tags inserted by tex4ht. Small proof of concept is lua4ht package.
Advantage is that it supports fontspec and unicode-math packages, which tex4ht doesn't support otherwise, the downside is that mathml production is broken, so it is produced as normal italic text in the sample. In theory, we can produce mathml directly from LuaTeX's math nodes, I've tried some exercises in this direction and it seemed doable.
Sample:
\documentclass{article}
\usepackage{fontspec}
\usepackage{unicode-math}
\begin{document}
\section{Font support}
Příliš \textit{žluťoučký kůň} úpěl \textsc{ďábelské ódy}. A \textbf{další text}
\section{Math}
$\forall x \in X, \quad \exists y \leq \epsilon$
\section{Tables}
\begin{tabular}{ll}
hello & world\\
hello & again\\
\end{tabular}
\end{document}
we need also small config file, hej.cfg:
\Preamble{xhtml}
\Configure{textit}{\HCode{<em>}}{\HCode{</em>}}
\Configure{textbf}{\HCode{<strong>}}{\HCode{</strong>}}
\Configure{textsc}{\HCode{<span class="sc">}}{\HCode{</span>}}
\Configure{$}{\HCode{<span class="inline-math">}}{\HCode{</span>}}{}
\begin{document}
\Css{.sc{font-variant: small-caps;}}
\Css{.inline-math{font-style:italic;}}
\EndPreamble
compile with:
make4ht -b lua4ht -um draft -c hej.cfg sample.tex "new-accents"
and the result:

<h3 class="sectionHead"><span class="titlemark">1 </span> <a
id="x1-10001"></a>Font support</h3> <!--l. 10--><p class="noindent" >Příliš <em>žluťoučký kůň</em> úpěl <span class="sc">ďábelské ódy</span>. A <strong>další text</strong> </p><!--l. 12--><p class="noindent" > </p><h3 class="sectionHead"><span class="titlemark">2 </span> <a
id="x1-20002"></a>Math</h3> <!--l. 14--><p class="noindent" ><span class="inline-math">∀∈, ∃≤</span> </p><!--l. 16--><p class="noindent" > </p><h3 class="sectionHead"><span class="titlemark">3 </span> <a
id="x1-30003"></a>Tables</h3><div class="tabular"> <table id="TBL-1" class="tabular"
cellspacing="0" cellpadding="0"
><colgroup id="TBL-1-1g"><col
id="TBL-1-1" /><col
id="TBL-1-2" /></colgroup><tr
style="vertical-align:baseline;" id="TBL-1-1-"><td style="white-space:nowrap; text-align:left;" id="TBL-1-1-1"
class="td11"> hello </td><td style="white-space:nowrap; text-align:left;" id="TBL-1-1-2"
class="td11"> world </td></tr><tr
style="vertical-align:baseline;" id="TBL-1-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-1-2-1"
class="td11"> hello </td><td style="white-space:nowrap; text-align:left;" id="TBL-1-2-2"
class="td11"> again </td></tr><tr
style="vertical-align:baseline;" id="TBL-1-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-1-3-1"
class="td11"> </td></tr></table> </div>