#author("2024-03-17T07:24:56+09:00","default:yakumo_murakami","yakumo_murakami")
[[今さらPython]]

* 参考 [#eb165db0]

- https://docs.python.org/ja/3.5/library/urllib.request.html

* 本文 [#b13fa6e7]

とあるサイトにスクレイピングで更新チェックをしていたんだけど、サイト更新した途端にエラーがでるようになったの。~
エラーの出方を見ていてピンとくるものがあり「ああ、情報が必要になったのね」といくつか試したけど、うまくいったので報告します。

** 情報を付加する意味 [#j10d46e8]

サイト側で考えてほしいのだけど、パソコンやスマホのブラウザで閲覧してほしいと思うの。スクリプトでアクセスする人なんてお呼びじゃないはず。

そこでコッソリとアクセスしているのだから、きちんと本来あるべき手続きに従うのは道理というもの。

たとえば○○ブラウザ指定と対応環境を指定しているなら、以下の情報を加える。

*** 情報設定 [#je09df3d]

        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の仕事をしたことのある方ならご存知と思うけど、特定の言語、特定のブラウザに対してサービスを許可するのはよくあることなの。

*** 注意点 [#vd617138]

''User-Agent は動作確認しましたが、HTTP_ACCEPT_LANGUAGE の方は未確認です。ちゃんと動くかはわからないので後日検証してみます。''


トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS