モブ沢工房

プログラミングとかLinux関連(特にOSSのグラフィックツール関連)とかレトロゲームとか3Dプリンタやら日曜大工等、色々。

BeautifulSoup4で突然なんだかエスケープされるようになったので対処

あ…ありのまま 今 起こった事を話すぜ!

「おれは xml-rpcでfc2から取ってきた記事をbs4にかけたと
思ったら すべてのタグが<とかでエスケープされていた」

な… 何を言っているのか わからねーと思うが 

おれも 何をされたのか わからなかった…

というわけでなんなんざましょ?理由はわからないのですが、もしかして何かfc2側が変わったのか? それともライブラリ側のアップデートで挙動が変わったのか?

いやまさかスタンド攻撃ではないよな…

今まで動いていた自作スクリプト…すなわち最初にヒットする自ブログの画像を最適アスペクトの最適サイズに切り取り縮小して自動アップロードするというモノなのですが、それが突然動かなくなりました。

そんなわけで色々調べた結果、こういう風にして回避することにしました。

    b=BeautifulSoup(entry['description'].encode(CHARSET)) # <-ここで勝手に&lt;されてる
    imgs=b.find_all('img') # エンコードされているので当然、タグとはみなされない
    if len(imgs)==0:
        # it may be prettify error?
        print('[INFO] no image found,but try prittify(formatter=None)') 

        b=BeautifulSoup(b.prettify(formatter=None)) # <- これだ!このformatter=Noneでprittifyして再度突っ込む!
 
        imgs=b.find_all('img') # <- これは動く

要するにprettifyのformatterをNoneにして再度突っ込むみたいな適当な逃げにしてみました。 一応動くのでこれでいいや…