プログラミング

未経験者がPythonでスクレイピングを始める前に知っておくべき内容まとめ

更新日: 投稿日:2020年10月9日

未経験者がPythonでスクレイピングを始める前に知っておくべき内容まとめ
ロゴ画像:公式サイトより https://www.python.org/community/logos/

Pythonを学習し始めた矢先、スクレイピングなる存在を知ったそこのあなた。奇遇ですね。筆者もその経路でスクレイピングを学びました(笑)

魅力的に見えるスクレイピングですが、実は違法と見なされる場合がある事をご存知でしたか。知らない間に法を犯していた!とならない為にも、Python歴7年の筆者が事前に知っておきたいスクレイピングに関する情報をまとめました。

最後まで見ていただければ、安全に、楽しく、強力にスクレイピングを実践するための情報を収集できます。では早速見ていきましょう。

本記事は、これからPythonの学習を始めようとしている方やプログラミング言語未経験の方に向け、現役エンジニアの方にわかりやすく解説して頂きました。また、記事の後半ではPython学習におすすめな『プログラミングスクール』や『オンラインの学習サービス』を紹介しています。ぜひ最後までご覧ください!

スクレイピングとは

スクレイピングとは

スクレイピングとは、ウェブサイトから任意の情報を取得する技術を指します。また、それを行うプログラムを指して『スクレイパ』と呼ぶこともあります。

スクレイピングをすることで、ウェブサイト上に存在している、ありとあらゆる情報をローカル環境下に保存することが可能です。好きなウェブサイトがあっても、知らないうちに閉鎖されていてコンテンツの閲覧ができない!となる前に、スクレイピングを実施していればコンテンツが閲覧できなくなる可能性を回避できます。

スクレイピングと混同されがちな技術としてクローリングというものをご存知でしょうか。続いてご覧ください。

クローリングとの違い

クローリングとの違い

クローリングとは、ウェブサイトのリンクをなぞって、ウェブページを巡回する技術を指します。また、それを行うプログラムを指して『クローラー』と呼ぶこともあります。

ご自身でブログを運営されている方ならご存知かもしれません。“記事を更新した際にGoogleのクローラーに巡回させないと、データベースにインデックスされない”という言葉の羅列を聞いたことのある人も多いでしょう。かの有名企業にも積極的に採用されている技術です。

ウェブサイト内を巡回して(クローリング)から、任意の情報を取得する(スクレイピング)という関係性について、それぞれ異なる技術であるという点も含めて認識しましょう。

スクレイピングは違法行為の可能性がある

スクレイピングは違法行為の可能性がある

ここまでスクレイピングとクローリングについてご紹介しました。しかし冒頭申し上げた通り、クローリングとスクレイピングには違法となる可能性があります。なぜ違法となる場合があるのでしょうか。それは著作権とサーバー負荷の観点から説明可能です。

まず、著作件について。詳細は他サイトの記事※1に譲るとして、概要だけ説明します。

※1スクレイピングは違法?3つの法律問題と対応策を弁護士が5分で解説

コンピュータによって情報を解析すること、もしくは翻訳(ここでは、取得した情報に新たに表現を加えること)以外の場合は著作権法に引っかかる可能性があります。言い換えると、取得した情報を営利目的で他人に譲渡する場合などは違法となります。その為、情報を販売する場合はスクレイピングしたものを、自分で分析した後に再構成する必要があります。取得結果をそのまま、はNGです。

サーバー負荷に関しては過去の判例(岡崎市立図書館事件もしくはLibrahack事件※2)を元に考えてみましょう。問題となったのはサーバーへのアクセス頻度でした。頻度の是非についてここで言及するつもりはありませんが、頻繁すぎるサーバーへのアクセスは、ときにDoS攻撃と見なされる可能性があります。DoS攻撃について詳細を知りたい方はこちら(他サイトの記事)を※3参照ください。

※2岡崎市立中央図書館事件 – ウィキペディア(Wikipedia)
※3Dos攻撃とDDos攻撃の違いとは?

つまり、クローリング/スクレイピングの頻度が高すぎると、サーバーへのDoS攻撃と見なされる可能性がある、ということです。アクセス先のサーバー許容負荷を知らないうちにクローラー/スクレイパをコピペして、URLのみ変更して実行すると・・・恐ろしいですね。事前にサーバーに関して情報を知る必要がありますよね。そこでウェブサイトにはrobots.txtが用意されている場合が多いです。

まずはrobots.txtの確認から

まずはrobots.txtの確認から

robots.txtというファイルには、クローラー/スクレイパに対して、どのURLにアクセスして良いか、してはいけないか、その頻度について等の情報が記載されています。例えば以下のrobots.txtについて見てみると、

例: robots.txtに記載されている中身について

#created 2020.10.08
User-agent: *
Crawl-delay: 5
Disallow: /ng
Allow: /ok

sitemap: http://example.com/sitemap.xml
User-agent   対象となるクローラーの種類
Disallow   クロールを禁止するパス
Allow    クロールを許可するパス
Crawl-delay クロールする間隔(秒)
Sitemap サイトマップXMLのURL

などが挙げられます。ここで、Crawl-delayにはクロールの間隔が指定されている場合があり、クロールする場合はこの頻度を守る必要があります。

robots.txtは必ずウェブサイトのトップページに位置しています。使ったことがない人はいないサイトといえばWikipediaがありますね。Wikipediaにもrobots.txtは用意されています。アドレスバーにhttps://www.wikipedia.org/robots.txtを入力すれば閲覧可能です。

APIの提供有無を確認する

APIの提供有無を確認する
クローリング/スクレイピングをする前に、まずはAPIの提供有無を確認してみましょう。APIとはアプリケーション(自分の実行したいコト)と、プログラムを繋ぐ窓口のようなもので、Twitterなどでも公開されています。

例えばTwitterにて特定アカウントのツイートを取得したい場合、API経由で実装が可能です。これを自作のクローラー/スクレイパで実現することも可能ですが、API経由の場合、Twitter側がアクセス制限をかけているので、ユーザーが負荷を気にしすぎる必要はありません。

このように、APIが提供されている場合はAPIを使うことで、より安全にウェブサイトから任意の情報を取得可能となります。APIが存在していない場合に始めて自作のクローラー/スクレイパを実装しましょう。

Pythonでのスクレイピング実践方法

Pythonでのスクレイピング実践方法

ここまでスクレイピングを始める前に必要な内容をまとめてきました。では、Pythonでスクレイピングを実践するためにはどうすれば良いのでしょうか。

ウェブに関する知識を全て身につけてからPythonでスクレイピングを実践することも、もちろん可能です。しかしせっかくPythonを学習しているのに遠回りしていては時間がもったいないですよね。そこで今回は有用なライブラリ、RequestsBeautifulSoupについて簡単にご紹介します。

requests

指定したウェブサイトやウェブページのHTML/XML情報を取得します。Pythonには標準ライブラリであるurllib2がありますが、高機能故に少し使い勝手が悪いです。

Requestsの日本語公式を見てみると“人間のためのHTTP”と大げさに記述されています。記述はともかくとして非常に使い勝手が良く、URL文字列を指定することでHTMLの取得が可能です。ただし取得したHTMLには自分にとって必要ない情報が多く含まれています。

そこで活躍するのがBeautiful Soupです。

Beautiful Soup

Requestsで取得したHTMLやXMLから任意のデータを抽出するためのライブラリです。取得したてのHTMLは不必要な情報が大量に含まれています。その中から任意のタグ情報のみを抽出することが可能です。例えばとあるウェブサイトにアクセスし、お気に入りの画像を複数枚見つけ、その画像すべてが欲しいとします。Requestsを使ってHTMLを取得した後に、Beautiful Soupで成形し、IMGタグのsrcのみを抽出する・・・といったことも可能です。

このように2つのライブラリを組み合わせることによって、強力なスクレイパを自作することが可能です。

スクレイピングの効率的な学習方法

スクレイピングの効率的な学習方法

スクレイピングを使うことで、効率良くデータ収集できるのは事実です。しかし一方でスクレイピングを実践する為にはHTMLやHTTP等のウェブに関する知識を一定量必要とします。

Pythonを7年使ってきた筆者の経験から判断して、ウェブに関する知識を体系的に学ぶのは難しいです。なぜならネット上にはほとんどすべての情報が存在している一方で、自分にとって必要な知識が体系的にまとまっているものは存在していないからです。一人ひとり実現したいことが異なるので当然ですよね。

餅は餅屋ではありませんが、効率良く学習するためには、質問できる環境が大切です。自分の周りにウェブについて詳しい人がいる場合は、迷わず助言を求めましょう。1人で解決しようとするならば、膨大な時間が必要となってしまいます。

もし周りに詳しい人がいない場合は、プログラミングスクールに通うことをオススメします。プログラミングスクールは、必要な知識を体系的に学べるだけでなく、質問できる環境が整っており、その道のプロから的確な回答が返ってきます。効率良く学習するうえでこの上ない環境といえます。

スクールはどこがおすすめ?

Pythonを学習するのにおすすなプログラミングスクールをご紹介します。

DMM WEBCAMP 学習コース|Pythonコース

DMM WEBCAMP 学習コース(旧:SKILLS)
出典:DMM WEBCAMP 学習コース公式サイト

DMM WEBCAMP 学習コース(旧:SKILLS)は、マンツーマンによる指導と独自メソッド(ITスキル習得に必要なプロセスを3ステップに分解)で、未経験から『最短』で即戦力スキルを身につけることができるプログラミングスクールです。

Pythonコースでは、AIの基礎から機械学習、そして特徴量作成・モデル構築・精度評価の一連を実践しながら習得していきます。カナダで開発された学習・評価モデル『ICEモデル』を基にした独自カリキュラムで、未経験でも短期間で上達でき挫折することなくやり遂げることが可能です。

週2回行われるメンタリングではモチベーションを維持・向上させるために、学習方法のレクチャーや疑問点の解消、1週間の振り返りなどのサポートを行っています。

このコースでは実際に機械学習プログラムを開発することができるので、現場で通用する実践的なスキルを身につけることができます。また、エラーが出たりつまづいた場合には、毎日15時〜23時にチャットで質問でき(であれば素早く回答!)、課題へのレビューサポートも無制限で行っています。※タイタニックの乗客データからの生存者を予測や花の種類の分類、レンタサイクルの利用者予測など

AI・データサイエンスの知識を身につけて転職に活かしたい社会人や、将来性あるPythonを習得して就職活動の強みとしたい学生の方には特におすすめのコースです。

→ DMM WEBCAMP 学習コース|Pythonコースの詳細はこちら

キカガク

キカガクの公式サイト
出典:キカガク公式サイト

キカガクは、受講者『45,000名以上』という実績と受講生満足度『90%』を誇る、動画学習プラットホームです。AI・機械学習領域の学習に特化しており、JDLA(日本ディープラーニング協会)のE資格認定講座を受講することで、受験可能なレベルのスキルを身につけることができます。

また、第四次産業革命スキル習得講座にも認定されているので、給付金制度を利用すれば受講料の70%を補助してもらえます。通常792,000円(税込)の受講料を237,600円(税込)まで下げることができるので、これまでプログラミングスクールへの受講を予算面でためらっていた方にはとても魅力的なポイントといえます。

キカガクの学習スタイルはオンラインによるハンズオン形式の動画学習。Pythonや数学の基礎から環境構築、そしてAIを搭載したWebアプリケーション開発までを『最短最速』で学べる環境が整っています。

エラーなどでつまづいてもチャットを使っていつでも質問可能で、定期的な個別メンタリングも実施されているので、挫折することなく学習を進めることができます。また、チーム学習で同期生とコミュニケーションをとりながら学習することもできるため、一緒に学ぶことでモチベーションも維持できるメリットがあります。

→ キカガクの詳細はこちら

tech boost(テックブースト)|AIコース

tech boost(テックブースト)|AIコースの公式サイト
出典:tech boost(テックブースト)公式サイト

tech boost(テックブースト)は、転職支援サービス『TechStars Agent(テックスターズエージェント)』やフリーランス向け案件紹介サービス『Midworks』などで有名なBranding Engineerが運営するプログラミングスクールです。

tech boost(テックブースト)のAIコースでは、3ヶ月の学習期間でAIエンジニアとしてのスキルを習得し、手厚いキャリアサポートを受けながら転職までを目指します。

現役エンジニアのメンターが学習する上での不安や悩み、進捗状況などについても徹底サポートしてくれるので、挫折することなくやり遂げることができます。

AIやPythonの基礎から機械学習やAIの開発に必要な数学知識までを段階的に理解していくカリキュラムになっているため、プログラミング未経験でも心配いりません。はじめてプログラミングに触れる方も安心して学習を進められます。

無料説明ではコース内容についてだけではなく、キャリアを前提とした学習計画についても説明してもらえるので、まずは色々と相談してみると良いですよ!

公式サイト:→ tech boost(テックブースト)|AIコースの詳細はこちら

もっと詳しく比較したい方は、「Pythonが学べるおすすめプログラミングスクール11選!未経験・学生もOK!」という記事を参考にしてください。通学・オンライン、マンツーマンやオーダーメイドカリキュラムなど、目的に”ぴったり”の教室が見つかりますよ!

Pythonが学べるおすすめプログラミングスクール11選!未経験・学生もOK!

まとめ|Pythonでスクレイピングを始める前に知っておくべき内容

ここまで、Pythonでのスクレイピングについて解説しました。スクレイピングを始める前に知っておかなければならない内容を紹介しました。

特に、違法行為にならないためにも事前のrobots.txtの確認やAPIの有無は確認しましょう。また、PythonでスクレイピングをするにあたってオススメのライブラリとしてrequestsとBeautiful Soupについてご紹介しました。この2つを組み合わせることで強力なスクレイパを自作可能です。

スクレイピングは魅力的な技術です。一方で幅広い知識が要求される分野でもあります。この記事がスクレイピングの広大な世界への足がかりになれば幸いです。

もう一度「未経験者がPythonでスクレイピングを始める前に知っておくべき内容まとめ」を読む ↑

Python(スクレイピング)を活かせるエンジニア転職におすすめな転職サイト・転職エージェント

Python(スクレイピング)を活かしたエンジニア転職におすすめな転職エージェント・転職サイトを比較するなら「エンジニアにおすすめ!IT/Web系に強い転職サイト11選|現役プロが比較・ランキング」という記事を参考にしてください。活かせる言語や業種など、自分の目的や条件にあった職場探しにお役立てください。

エンジニアにおすすめ!IT/Web系に強い転職サイト11選|現役プロが比較・ランキング

Python未経験者が本格的に学習するならスクールがおすすめ

Pythonを『未経験』からでも安心して学べるプログラミングスクールをご紹介します。少しでも気になるスクールがあれば、無料の相談会・体験会に登録してみてくださいね。

Pythonを学べるスクール5選

  1. DMM WEBCAMP Pythonコース
    未経験からでも挫折しないカリキュラムとメンターの指導で最短でスキル習得。転職/副業支援が手厚い人気スクール!

  2. キカガク
    未経験からAI搭載のWebアプリ開発まで最短最速で学習できます。国の給付金制度を使えば受講料が最大70%OFF!

  3. tech boost(テックブースト)|AIコース
    オンラインor通学の選択ができるスクール。現役エンジニアよる徹底指導でプロエンジニアを目指せます!

  4. テックアカデミー|Pythonコース
    業界最大手のオンラインスクール。現役エンジニアによる指導で最短4週間でスキル習得。しかもコスパ良しです!

  5. アイデミー
    3カ月でAI人材になることを目標としたスクールです。AI領域の就職/転職を目指す方には特におすすめです!

もっと詳しく比較したい方は、「Pythonが学べるおすすめプログラミングスクール11選!未経験・学生もOK!」という記事を参考にしてください。通学・オンライン、マンツーマンやオーダーメイドカリキュラムなど、目的に”ぴったり”の教室が見つかりますよ!

Pythonが学べるおすすめプログラミングスクール11選!未経験・学生もOK!

Python以外の言語を学べるスクールを比較するなら

もっと多くのプログラミングスクールの中から比較したいという方は、「おすすめプログラミングスクール比較11選!社会人・未経験の転職・就職にも有利!」という記事を参考にしてください。

おすすめプログラミングスクール比較11選!社会人・未経験の転職・就職にも有利!

転職付き(転職保証型)のプログラミングスクールの詳細を知りたいかたは、「【無料あり】転職支援・保証型プログラミングスクール比較11選!社会人・学生さんの就職に強い!」をご覧いただき、自分の目標や目的にぴったりのスクールを見つけてくださいね。

【無料あり】転職支援・保証型プログラミングスクール比較11選!社会人・学生さんの就職に強い!

[PR]:Python、Djangoを学んで転職・就職を目指すならここ

-プログラミング
-, , , , , ,

関連記事

Pythonで自動化ツールを作れば効率化できることまとめ【未経験者必見!】

Pythonで自動化ツールを作れば効率化できることまとめ【未経験者必見!】

ロゴ画像:公式サイトより https://www.python.org/community/logos/ Pythonを使えば自動化ツールを作ることができ、業務の効率化が可能という紹介文はめずらしくあ …

pythonのロゴイメージ

Python入門編!人気の理由や学習方法、将来性や転職市場など初心者向けに徹底解説!

今からプログラミングを始めようと考えられているあなた。一口にプログラミングと言っても実に様々な言語がありますが、今最も注目されている言語はなんだと思いますか? 正解は、今回紹介するPythonです。 …

【初心者向け】Laravelのおすすめ学習法やできること、作れるものなどを徹底解説!

【初心者向け】Laravelのおすすめ学習法やできること、作れるものなどを徹底解説!

ロゴ画像引用元:https://github.com/laravel/art 今回はPHPのWebアプリケーションフレームワークであるLaravelを学びたいプログラミング初学者に向けて、現役エンジニ …

Reactで副業を始める!!【React入門編】できることや学習方法などを解説

Reactで副業を始める!!【React入門編】できることや学習方法などを解説

ロゴ画像:Wikimedia Commonsより https://commons.wikimedia.org/wiki/File:React-icon.svg 世間でコロナウィルスが騒がれており、在宅 …

【未経験向け】Pythonでデスクトップアプリを簡単に作る方法とは?おすすめライブラリを紹介!

【未経験向け】Pythonでデスクトップアプリを簡単に作る方法とは?おすすめライブラリを紹介!

ロゴ画像:公式サイトより https://www.python.org/community/logos/ 本記事はプログラミング初学者に向けた記事となっています。これからPythonを勉強する方のため …

[PR]:
お得なキャンペーン中!!

転ストの中の人

  • 運営者のstaff H
  • 運営者のstaff M

エンジニア歴15年のstaffHとWebデザイナー・ディレクター歴20年のstaffMの2名が中心となりこのサイトを運営しています。転職/就職やフリーランスへの転向、未経験からのプログラミング学習など、これから”新しい一歩を踏み出そうとしている、エンジニア・クリエイター”に役立つ情報を発信しています。

プロフィール詳細 / Twitter
[PR]:





[PR]:
ページのトップへ戻る