2016-06-23 9 views
3

Webサイトをスクラップしようとしていますが、リクエストJSを使用してCheerioに渡すHTML文字列を取得しています。 。CheerioがHTML文字列に存在する特定の要素を選択しない

紛らわしい部分があり、私はこすりしようとしているHTML文字列内に存在しない部分がありますが、私はそれらをこすりしようとするチェリオを使用する場合、それはありますが、それは...それを見つけることができないです

たとえば、別のテーブルの最後の行の中にIDを持つテーブルがあります。そのIDをセレクタとして使用すると、すべての子TRを取得できますが、代わりに最初のTR、次に1つのTDが入っている別のTR、次に2番目のTRの突然の終了、次にテーブルのタグの終了です。

これをcheerio.loadに送る前にconsole.loggingすると、明らかにその2番目のTRに情報があることがわかります。その後、そのテーブルを閉じる前に複数のTRが続きます。しかし、私がcheerioを通してそれを実行するとき、これは私にそれが何を言うかではありません。

今の残りの部分(これが重要かどうかわかりませんが...)私はそれにhref="javascript:void(0)"があることに気づいています - それはCheerioを投げているようなものでしょうか?

ありがとうございました。

さらに調査すると、'td:contains("this text")'のようなセレクタを使用すると、これが表示されます。しかし、他の方法では、私が言うことができる限りです。

また、javascript:void(0)は問題の原因ではなく、正規表現を使用してすべてのインスタンスを削除しましたが、まだ謎があります。

答えて

1

コードがエラーで書かれていることが判明しました。おそらく、擦れを防ぐのに役立ちます。 で終了したタグ<font>がありましたが、これはどうにかしてcheerioの解析能力を破りました。

html = html.replace(/[<]font size[=]["]1["][>]\d[<]\/div[>]/g, ""));

関連する問題