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を使いましょう。。乗り換えましょう。。。というお話でした。
では。