読者です 読者をやめる 読者になる 読者になる

cheerioを使ってスクレイピングする時に大文字のタグや属性が使われている場合の対処

cheerio node

cheerioを使用してスクレイピングをしようとしたらハマったのでメモ。

例えば以下のようなHTML(ゲェー)が使われているページ。

<TD CLASS="alpha">A</TD>
<TD CLASS="alpha">B</TD>
<TD CLASS="alpha">C</TD>
<TD CLASS="alpha">D</TD>
<TD CLASS="alpha">E</TD>
console.log($('td.alpha').length);

と書いても0が返る。

一応issuesに投稿しておいて自分で色々試行錯誤してみたがうまく行かず、困り果てていたところに返信があった。
以下のようにすればいいみたい。

var options = {
  lowerCaseAttributeNames: true,
  lowerCaseTags: true
};
$ = cheerio.load(body, options);

// result 5
console.log($('td.alpha').length);

lowerCaseTagsはReadmeに書かれていたが、lowerCaseAttributeNamesの方は載っていなかった。
自分のつたない英語に快く答えてくれてjeremyどうもありがとう。