PyQueryでのwebスクレイピングの文字化けの対処法

前回の記事で大学のシラバスのデータの取得を試みたのだが、文字化けしてしまっていた。
これがこの度に解決したので、それをメモっておく。

まずはエンコーディングに問題があるのかと思い、問題のページの文字コードを調べてみることにした。

こちらのサイトを参考にした。
いるかのボックス: Pythonでのスクレイピングで文字化けするときの対処

結果は成功しているページと同じutf-8だった。
なお、今回のコードを実行する時にエラーが出たので、一時的にpythonのバージョンを3系から2に下げた。

格闘したあと、質問投稿サイトで聞いてみたところ、
問題のページでは

のような明確に文字コードを示す文が書かれていないことがエラーの原因のようだ。

そこで、回答してもらった方のアドバイスに従い、
そのページにutf-8の宣言文を表示してからスクレイピングするという奇抜なアイディアを採用したところ見事成功した。
なるほどこんな方法もあるんだな。

このプログラムのおかげで、煩わしい作業がたった30秒で完了した。

今回の作業を手打ちでやると恐らく3時間ほどかかると思う。
さらに欲しいデータはこれだけじゃないのでトータルで見ればもっと莫大な時間がかかることが想定される。しかも面白くない。
4時間かけても、6時間かけてでも、スクレイピングを勉強して、たったの30秒で全て終わらせたほうが、今後を見越しても有意義だったように思う。

PyQuery自身に関してもそうだが、それの中で使われているlxmlや,pythonそれ自身についてももっと勉強する必要があると思った。
これは今後の課題だ。

コメントを残す