とあるサイトにスクレイピングで更新チェックをしていたんだけど、サイト更新した途端にエラーがでるようになったの。
エラーの出方を見ていてピンとくるものがあり「ああ、情報が必要になったのね」といくつか試したけど、うまくいったので報告します。
サイト側で考えてほしいのだけど、パソコンやスマホのブラウザで閲覧してほしいと思うの。スクリプトでアクセスする人なんてお呼びじゃないはず。
そこでコッソリとアクセスしているのだから、きちんと本来あるべき手続きに従うのは道理というもの。
たとえば○○ブラウザ指定と対応環境を指定しているなら、以下の情報を加える。
def get_headers(self): return({ "User-Agent":"Mozilla/5.0 (X11; U; Linux i686) Gecko/20071127 Firefox/2.0.0.11", "HTTP_ACCEPT_LANGUAGE":"ja-JP,ja;q=0.9,en-US;q=0.8,en;q=0.7" }) def getWeb(self): headers = self.get_headers() req = urllib.request.Request(self.url,None,headers) with urllib.request.urlopen(req) as res: return(res.read())
コンテンツでなくシステム側でWebの仕事をしたことのある方ならご存知と思うけど、特定の言語、特定のブラウザに対してサービスを許可するのはよくあることなの。
User-Agent は動作確認しましたが、HTTP_ACCEPT_LANGUAGE の方は未確認です。ちゃんと動くかはわからないので後日検証してみます。