我正在尝试使用 Nodejs 和 Cheerio 抓取带有表格数据的纯静态 html 页面。但问题是,该页面正在尝试抓取没有正确的 HTML DOM。我的意思是,有许多未关闭的开始标签。还有其他</table>
没有开口的结束标签()。
示例代码(警告:代码接近真实示例 & html 已损坏)
<body topmargin="0" leftmargin="0" marginheight="0" marginwidth="0" bgcolor="#FFFFFF" text="#000000" link="#003399" vlink="#003399" alink="#FF8000">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr><td bgcolor="#445BC6">hii</td></tr>
<tr><td></td></tr>
<tr>
<td align="right" bgcolor="#D9D9E8" width="100%">
<p class="menu"><b><font color="#000000"><a href="details.php?type=contact&npo_id=18430">Individuals</a></font></b>
</td>
</tr>
</table>
<P>
<TABLE CELLPADDING=8><TR><TD> </TD><TD>
<TABLE CELLPADDING=8 STYLE="border-collapse: collapse" BORDER=1 WIDTH=80% ALIGN=cemter>
<TR><TD BGCOLOR="D8D8C4" VALIGN=top ALIGN=right><P><B>Data 1</B></TD>
<TD><P><B>Data 2</B></TD>
</TR>
<TR><TD BGCOLOR="D8D8C4" VALIGN=top ALIGN=right><P><B>Data 3</B></TD>
<TD><P>Data 4</TD>
</TR>
</TABLE>
</TD></TR></TABLE> <tr>
<td width="100%" valign="bottom" colspan="2" align="center">
<p>
<a href="#top">another dirty content</a><br>
<a href="#top"><font color="#000000">table is wrong</font></a></p>
</td>
</tr></table></div>
正如人们所看到的,有没有关闭的 P 标签。在底部有
没有打开的</table>
&标签。</div>
那么如何使用cheerio 和 nodejs 获取 Data1、Data2、Data3、Data4 呢?任何其他库也可以有效地解析此类数据
编辑(解决方案):问题已解决。我所做的只是将 html 标签转换为小写,它工作得很好。我不知道为什么小写很重要,但它只适用于cheerio