BeautifulSoupの古いバージョンで困った話

BeautifulSoupといえば、pythonでのHTML解析の定番です。

現在のメジャーバージョンは4なのですが、うっかり
pip install beautifulsoup
とすると、開発終了した3系が入ってきます。

実際のところ、4は3との後方互換性はなく、命名規約のレベルから違っているために、乗り換えられずにいるケースもあったりします。

で、その3系ではまった話。

とあるscriptタグの中身を取得しようとしたのですが、コードが壊れていたのです。まいった。

スクリプトタグの内部は、HTMLとは別の文法構造を持つため、本来はCDATAとして解釈するべきです。</script>を終端として扱うものの、それ以外の内部の文字列をHTMLとして解釈してもらっては困ります。

モジュールの中身を見るかぎり、4系だとCDATAとして扱うコードが見えるのですが、3系にはなく。。

<script>var $d=$("<div>test</div>");  for(var i=0; i<s.length; i++){ if(s[i]>lim){} }</script>

というような、なんとなくありそうなコードの取得が正しく行えません。

</div>が含まれなければ無事なんですが、ちょっと困りました。

そのほかHTML5への対応も未熟なので、素直にbs4を使いましょう。。乗り換えましょう。。。というお話でした。

では。