EngineIT技術を分かりやすく簡潔にまとめることによる学習の効率化、また日常の気付きを記録に残すことを目指します。発生状況・エラーメッセージWeb上で公開されているcsvデータのURLに対して、Pandasの「read_csv」を使ってアクセスしようとした際にエラーが出ました。エラーメッセージの最後の一行は次のように表示されています。原因と考えられるのは、アクセスしようとしているURLが「非ブラウザ」のリクエストを許可しない設定になっている点です。HTTPヘッダーの基本の構文は次のような形式です。[comment]'実際PythonからリクエストのデフォルトのHTTPヘッダーは次のようになっており、非ブラウザのリクエストになっています。'python-requests/2.13.0'この「’python-requests/2.13.0’」の部分などをブラウザからのリクエストと認識されるように書き換えていく事になります。「非ブラウザ」のリクエストが許可されていないので、HTTPリクエストヘッダーの内容を「ブラウザ」リクエストとして明示的に書き換えてリクエストを送ります。{‘XXXX’}」を書いてHTTPヘッダーを指定する事でブラウザリクエストとして送信しています。2requestsパッケージのgetメソッドで先程のヘッダーを指定した状態でHTTPレスポンスを受け取り、その内容(テキスト)を変数(s)に格納しています。指定したURLに対してHTTPのGETリクエストを送り、HTTPのレスポンスを返却します(models.pyモジュール⇒Responsetクラスのインスタンス)。[200]>を返します。ブラウザリクエストとして認識させるため、HTTPリクエストヘッダーを定義しています。datapackageパッケージのPackageクラスをインポートして、Packageのインスタンスを作成しています。Packageインスタンスのresourcesメソッドを用いて”Resouce”オブジェクトのlistを返却します。表形式かどうかを判断するために”Resouce”オブジェクトのtabular属性をチェックしています。この値がTrueの場合は”Resouce”オブジェクトが表形式であると言えます。「res.descriptor[‘path’]」で指定したURLの資源に対して、上で定義したヘッダを付与したHTTPのGETリクエストを送り、getメソッドの戻り値のレスポンスの内容を「text」属性で取得。上記のcsvデータの内容を「read_csv」メソッドでPandasのDataframeに取り込みます。User-AgentとはUser-AgentはブラウザからWebサイトにアクセスする際に使うソフトウェアです。Webサイトにアクセスする際にはHTTPのリクエストヘッダーに’User-Agent’のラベル名でエージェントの名前を送っています。サーバーはこの’User-Agent’の情報から、どのようなデバイス(PCやスマホ)からのアクセスかを判断し、そのデバイスにあった情報を返します。ブラウザやOSの種類の情報を持っているのでアクセス解析にも利用されるものの、上記の通りユーザー側で値を操作できるため正確な統計とはならないリスクもあります。<extensions>1<system-information>ブラウザが動作している「デバイス」(Macintoshなど)やシステム情報(OSなど)を記述しています。(“X.X”はバージョン)1993~1996年頃のWindows製の32bitOSです。Workstation”とがあります。OSのサブシステムで、64bitOS上で32bitのアプリケーションを動作させる事ができます。LinuxをベースにしたGUIベースのOSです。2<platform>ブラウザのレンダリングエンジンの情報が記載されています。「AppleWebKit/537.36」などはAppleが中心となって作成しているレンダリングエンジンです。3<platform-details>上記<platform>の詳細情報が記載されています。KHTML(オープンソースのレイアウトエンジン)などレンダリングエンジンの名前が入るケースがあります。KHTMLは”Konquerer”と呼ばれるLinuxのKDEデスクトップのために開発されたもので、AppleWebKitもこのKHTMLから派生しています。Gecko」の文言を付与する事でGeckoが受け取るような最新のページを受け取る事が出来ます。4<extensions>リクエストしているクライアント端末のブラウザ情報(Chrome/51.0.2704.103)や、ブラウザにて利用可能なサードパーティ製の改修などを検知するための情報です。Firefoxの場合の記述内容(構文)Firefoxの場合の記述内容は次の通りです。Firefox/firefoxversion1Mozilla/5.0Mozillaに適合したブラウザである事を示す一般的なトークンで、IEやChromeなどでも冒頭にこの文言を記述するケースが多く、「ブラウザ戦争」などの歴史的な経緯もあり多くのブラウザ種類で「おまじない」的に記述されています。2[platform]ブラウザが起動しているOSの種類を記述しています(Windows、Linux、Mac、Android他)。3rv:[geckoversion]Geckoのバージョンを記述します。最近のブラウザではFirefoxのバージョンと同じケースが多いです。4Gecko/geckotrailブラウザがGeckoに基づいて動作している事を記述しています。スラッシュ(/)の後にある”geckotrail”はデスクトップPCの場合は常に固定で「20100101」にします。5Firefox/firefoxversionブラウザがFireFoxである事を記述しています。「/」の後にバージョンを記述しています。コメントをキャンセルメールアドレスが公開されることはありません。※サイト次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。本記事は次の記事の続編です。EngineIT技術を分かりやすく簡潔にまとめることによる学習の効率化、また日常の気付きを記録に残すことを目指します。Reserved.Top。