Requests(python)で文字化けする場合
RequestsはシンプルなHTTPライブラリですがよく文字化けします。Shift_JISのサイトだと多めな印象。
html = requests.get("http://Shift_JISのサイト")
print(html.encoding) #=> ISO-8859-1
なのでここを参考に
[Python]requestsが正しくエンコード情報を返してくれない場合は apparent_encoding を使うとよいかもしれない | aoshiman.org
html.encoding = html.apparent_encoding
print(html.encoding) #=> Shift_JIS
しかし元ブログにも書かれているように遅いです。
自分の環境だと130kbのhtmlソースで500ms程度かかっちゃいます…。
ちゃんと調べてはいないのですが、レスポンスヘッダに文字コード情報が入っていない場合に ISO-8859-1 を返すのかもしれません。
[Python]requestsが正しくエンコード情報を返してくれない場合は apparent_encoding を使うとよいかもしれない | aoshiman.org
とのことなので、レスポンスヘッダが空の時だけやるようにするとか、あるいはISO-8859-1を返して来た時だけにするとか工夫する必要がありそう。
こうやってどんどんと分岐処理が増えていってクローラーが肥大化していく。