Pythonでスクレイピング

スクレイピングでヘッダー情報を付与する方法とその目的

今回は、前回試したスクリプトにヘッダー情報を加えたリクエストを投げれる様にしていきます。さらに、ヘッダーを利用する目的や何をセットするのかというところにも触れていきます。

前回記事

目次

  • Pythonでリクエストにヘッダーを付与する
  • ヘッダーを設定する目的
  • ヘッダーの種類
  • まとめ

Pythonでリクエストにヘッダーを付与する

前回、利用したスクリプトは以下のものでした。

実行した結果は、以下の様なものです

しかし、urlopenを使った時のデフォルトのヘッダーは以下の様なものになっています。

これでは少々不自然ですね。今回は、このヘッダー部分を設定するスクリプトを作成していきます。

1. requestsモジュールをインストールする

前回、ある特定のページデータを取ってくるのにurlopenという関数を使いました。今回は、リクエストにヘッダーを付与したいのでurlopenではなくrequestsモジュールを利用していきます。

pip3を使ってインストールします。

無事、インストールできたか確認します。エラーが発生しなければインストール成功です。

2. ヘッダーを付与する

先ほどインストールしたrequestsモジュールを読み込んでヘッダーをセットします。ヘッダーデータはChrome Inspectorのネットワークタブなどから確認できます。

上記のスクリプトを実行してみます。

すると、前回同様の結果を取得できると思います。これで、ヘッダーを付与したリクエストでページデータ取得ができました。

ヘッダーを設定する目的

ヘッダーを設定する目的は、「端末やリージョンごとの異なる結果を取得する」「人間らしい振る舞いをする」などが挙げられます。

リクエストを受け取るサーバー側は、不自然なヘッダーのリクエストがきたら怪しいリクエストだと認識して必要に応じてブロックするなどの処理をします。悪意のあるリクエストがきた時、それを全てを処理していたらサーバーを攻撃されてしまう恐れがあるためです。

ヘッダーの種類

基本的なヘッダーとして以下の様なものが挙げられます。これらは、どのブラウザでも基本的に設定されている値です。

Headers: Host, Connection, Accept, User-Agent, Referrer, Accept-Encoding, Accept-Language

まとめ

今回は、スクレイピングスクリプトにヘッダーを付与する方法を紹介しました。スクレイピングで悪意のあるリクエストを送ることはダメですが、スクレイピングする上でヘッダーを設定することは重要です。正しい容量・用法を守った上で利用してみてください。

今回は、こちらの本を参考にしています。
PythonによるWebスクレイピング

Related post

  1. iOSアプリ開発

    Firebase iOSの解説・セットアップ編

    アプリを作る・サービスを立ち上げるといったとき、ほとんどの場合はDBや…

  2. iOSアプリ開発

    SwiftでJSONデータを使いやすくする!Codableの使い方

    APIからデータを取得する時、JSONでデータを受け取ることがあるかと…

  3. テクノロジー

    CSSによるセンタリングの方法と注意点についてのまとめ

    HTMLとかCSSの勉強を始めると、divやsectionなどで作った…

  4. テクノロジー

    ReactiveXで使うStreamとObserverとは?RxJSでわかりやすく解説

    前回は、ReactiveXとは?RxJSの入門と導入手順について話しま…

  5. テクノロジー

    Appleの新しいMessagesで何ができるのか。

    WWDC 2016では数多くのセッションが行われました。WWDC 20…

  6. テクノロジー

    ReactiveXとは?RxJSの入門と導入手順

    Rx (Reactive Extension)とはここ数年で話題になっ…

PAGE TOP