1

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ではうまくいきました.

4

1 に答える 1

0

cheeriohtmlparser2は、「寛容」であるはずの を中心に構築されています。ページが解析されず、これが社会通念に反することがわかっている場合は、正規表現を使用して解析します。これは、ページ構造があまり変わらないことを前提としており、解析しようとしているのはその 1 ページだけです。

また、サンプル HTML の上部に へのリンクがあることに気付きましたindividuals.php。あなたが求めているデータは、別の、より解析可能な形式で存在する可能性がありますか?

ああ、スクレイピングするときは、人々のプライバシーとサイトの使用条件を尊重してください。

于 2013-08-08T06:40:42.393 に答える