gpt4 book ai didi

node.js - 使用 Node Js 和 Cheerio 解析损坏的 HTML 代码

转载 作者:太空宇宙 更新时间:2023-11-04 02:39:31 25 4
gpt4 key购买 nike

我正在尝试使用 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>&nbsp;&nbsp;
</td>
</tr>
</table>
<P>
<TABLE CELLPADDING=8><TR><TD>&nbsp;</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

最佳答案

cheerio 是围绕 htmlparser2 构建的,它应该是“宽容的”。如果它无法解析您的页面,而且我知道这违背了传统观念,我会使用正则表达式进行解析。这是假设页面结构不会发生太大变化,并且只是您尝试解析的一个页面。

此外,我注意到示例 HTML 顶部有一个指向 individuals.php 的链接。您想要的数据是否可以以不同的、更易于解析的格式存在?

哦,抓取时要尊重人们的隐私和网站使用条款。

关于node.js - 使用 Node Js 和 Cheerio 解析损坏的 HTML 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18119201/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com