Python の lxml.html でパースエラーの拾い方

苦戦したのでここにメモ。

Python の lxml.html で HTMLファイルをパースすると、パースし損なっていても例外を投げることなく、正常終了と区別がつかない形で処理が終わってしまうことがある。

調べたところ、
lxml.html.html_parser.error_log
にパース時のエラーがまとめて残されていることが分かった。

for log in lxml.html.html_parser.error_log:
print log

とかやると、出力することができる。

しかし残念なことに、世の中のHTML、ほとんどが何かしらのエラーを吐いてしまうので、エラーが出たからフォールバック処理などとやっていては、ほとんどがフォールバック処理に回ってしまう。
エラーの中身を精査して致命的かどうかを判断する必要がある。

自作のHTMLならともかく、スクレイピングとかやってるときは手の打ちようがない。

ブログ気持玉

クリックして気持ちを伝えよう!

ログインしてクリックすれば、自分のブログへのリンクが付きます。

→ログインへ

なるほど(納得、参考になった、ヘー)
驚いた
面白い
ナイス
ガッツ(がんばれ!)
かわいい

気持玉数 : 0

この記事へのコメント

この記事へのトラックバック