fbpx
  1. HOME
  2. ブログ
  3. エンジニアになろう!
  4. 【初心者向け】Webスクレイピングのやり方とオススメの言語のまとめ

【初心者向け】Webスクレイピングのやり方とオススメの言語のまとめ

WEB上からデータを取得したい!

ミツオカミツオカ
WEB上から自分が欲しいデータを勝手に取得できたらいいのになあ〜
にゃんこ師匠 にゃんこ師匠
「Webスクレイピング」という技術でできるぞー!活用すれば、いろんなデータを集めて使うことで、業務の効率化、生産性を高めることができるな!
ミツオカミツオカ
面倒な作業を自動化するのも夢じゃないですね!ぜひマスターしたいです!
にゃんこ師匠 にゃんこ師匠
じゃあ、Webスクレイピングの詳細とオススメの言語などについて紹介しようかの!ちなみに、なぜスクレイピングがしたいんじゃ?
ミツオカミツオカ
トランプ大統領とウクライナ政府の動向をいち早くチェックしたいんです…!
にゃんこ師匠 にゃんこ師匠
・・・キャラ変えたんか?

クローリングについて

クローリングは、複数のWebサイトのリンクを参考に、Webページを巡回する技術です。

クローリングをするプログラムをクローラーとも呼びます。

クローリングが活用されている有名な例は、Google検索

非常に高度なアルゴリズムにより、様々な検索結果を表示しています。

にゃんこ師匠 にゃんこ師匠
クローリングは、スクレイピングと一緒によく出てくる言葉なので、最低限理解しておくといいじゃろう!

Webスクレイピングについて

Webスクレイピングは、HTMLから自分が欲しいと思うデータを取得すること。

これを行うプログラムをスクレイパとも呼びます。

Web上のデータを取得する上では、欠かせない技術となっています。

クローラにより、自分が欲しいと思うデータのあるWebサイトにアクセスし、スクレイパによって情報を取得していくという流れです。

スクレイピングをする前に

スクレイピングは、HTMLCSSを知っておかなければ、何もできません。

そのため、自信のない人は「Progate」などで復習、または学習しましょう。

また、Selenium(セレニウム)を使ってのスクレイピングDOM解析には、JavaScriptの知識が必要になる事がよくあります。

JavaScriptについてよく知っておくのも、スクレイピングに役立ちます。

スクレイピングを行う際の注意点

スクレイピングは、禁止しているサイトではやらないようにしましょう。

また、サイトに過度にアクセスをすると、法に反することもあります。

実際に、過度なスクレイピングにより逮捕されているケースもあります。

最悪の事態にならないよう、スクレイピングを禁止していないかを確認したり、過度なアクセスをするプログラムではないかを確認しましょう。

スクレイピングのオススメの言語

スクレイピングをするのに使用する言語は、にゃんこ師匠的にはPythonをおすすめします。

なぜなら、Pythonはスクレイピング関連のライブラリが豊富だからです。

ただ、Webアプリケーションに使用している言語によっても、使用すべき言語が変わります。

(PHPで作られているのなら、PHPでスクレイピングをするということです。)

にゃんこ師匠 にゃんこ師匠
書籍やサイトでもPythonによるスクレイピングの情報が豊富じゃな!
ミツオカミツオカ
それだと、障害やエラーが発生した時でも、他言語よりも容易に対処できますね

Requestsでのスクレイピングのやり方

それでは、スクレイピングのやり方について見ていきましょう。

今回は、Pythonを使う前提でお話していきます。

Requestsで、Webページを取得する

「Requests」は、PythonのライブラリでHTTPの通信を行うことができます。

人間のためのHTPPと言われるほど高度で使いやすいライブラリです。

Requestsを使うためには、pipでライブラリをインストールする必要があります。

当たり前ですが、pip や Python の環境がない方は、先にそちらを準備する必要があります。

Requestsをインストール

以下のコードで、ライブラリをインストールできます。

pip3をインストールされている方は、pipの箇所をpip3とコマンドを打つ必要があります。

pipに問題がなければ、難なくインストールできるはずです。

Requestsの基本的な使い方

では、実際に、Requestsでページを取得してみましょう!

今回は、人気WebメディアであるGigazineのページを取得してみました。

get()関数でurlを指定すれば、そのページの情報を取得できます。

ちなみに出力しているものは、ヘッダー情報とbody以下のコンテンツです。

headersで「header情報」を、contentで「body以下のコンテンツ」を取得できます。

BeautifulSoupで、データを取得する

Requestsでwebページを取得したら、ページの解析をする必要があります。

その時に用いるのが、BeautifulSoup

インストール

それでは、まず、BeautifulSoupをインストールしましょう。

Requestsと併用してBeautiful Soupを使う

「Requests」と「Beautiful Soup」は、よく併用して使われます。

では、実際に、Requests と Beautiful Soup を使って、Gigazineのデータを取得してみたいと思います。

まず、Requests によりGigazineのページを取得し、BeautifulSoup によってhtmlファイルを解読していきます。

そして最後に、sectionタグを見つける処理を行い、出力しています。

ブラウザを操作しながら、スクレイピング!?

Requests と BeautifulSoup では、ログインが必要なサイトやDOM解析に時間がかかるサイトでは、スクレイピングが困難です。

その際には、Selenium がおすすめです。

ブラウザ操作でスクレイピングをするため、ログインが必要なサイトでも簡単にデータを取得できます。

また、ボタンをクリックしないと出てこないデータ等がある場合、仮想ブラウザでクリックイベントを発することで、クリックした後のデータを取得できます。

Requests では、Bot判定される確率が高く、セキュリティ面が強固なサイトでは出来ないケースが多々あります。

ですが、Selenium は仮想ブラウザを操作し、データを取得していくため、Bot判定にかかりにくいのです。

にゃんこ師匠 にゃんこ師匠
しかし、短所もある…。ブラウザを立ち上げるため、結構重かったりするのじゃ
ミツオカミツオカ
高速にデータを集めたい場合は不向きかもー!

Seleniumのサンプルコード

Webブラウザを立ち上げた後、Google検索で、Webスクレイピングという文字で検索をします。

注意すべき点は、処理を大量に詰め込むとサーバーに負担がかかります。

処理が多いプログラムでは time.sleep() を使うことで、時間を空けながら行うプログラムにするのが良いでしょう。

さいごに

RequestsとBeautifulSoupを使えば、簡単にWebサイトのデータを集めることができます。

ログインが必要であるときなど、BeautifulSoup でデータを解析出来ない場合は、Selenium を使いましょう。

このように、用途や状況によって BeautifulSoup と Selenium を使えば、なお一層スクレイピングがはかどりますね!

にゃんこ師匠 にゃんこ師匠
これから機械学習やAIが発展していく中で必須になってくるスキルとも言えるのお!
ミツオカミツオカ
それはぜひ身に着けていきたいですね!

一緒に働いてくれる仲間を募集しております!

ライトコードでは、仲間を募集しております!

当社のモットーは「好きなことを仕事にするエンジニア集団」「エンジニアによるエンジニアのための会社」。エンジニアであるあなたの「やってみたいこと」を全力で応援する会社です。

また、ライトコードは現在、急成長中!だからこそ、あなたにお任せしたいやりがいのあるお仕事は沢山あります。「コアメンバー」として活躍してくれる、あなたからのご応募をお待ちしております!

なお、ご応募の前に、「話しだけ聞いてみたい」「社内の雰囲気を知りたい」という方はこちらをご覧ください。

ライトコードでは一緒に働いていただける方を募集しております!

採用情報はこちら

関連記事