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アプリ開発

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

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

  2. iOSアプリ開発

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

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

  3. テクノロジー

    iOSアプリ開発が簡単にできるStoryboard入門

    iOSアプリを開発しようとXcodeをダウンロードしてプロジェクト作成…

  4. テクノロジー

    今週のITニュースハイライト 7/2 – 7/8

    7月2日〜7月8日に話題・気になったITニュースを紹介します。…

  5. テクノロジー

    今週のITニュースハイライト 6/25 – 7/1

    Twitterの@nagami_hiroでは毎日きになるITニュースや…

  6. テクノロジー

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

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

  1. 便利

    携帯代を安くして、通信制限も解消する方法「LINEモバイルのすすめ」
  2. デザイン

    Sketchチュートリアルから学ぶ「アートボード」「マスク」「シンボル」の3要素…
  3. テクノロジー

    今週のITニュースハイライト 7/9 – 7/15
  4. iOSアプリ開発

    Firebase iOSの解説・セットアップ編
  5. 日記

    先日、第7回Creators MeetUpに参加してきました!
PAGE TOP