
【初心者向け】Webスクレイピングのやり方を徹底解説
2021.12.20
目次
WEB上からデータを取得したい!






クローリングについて
クローリングは、複数のWebサイトのリンクを参考に、Webページを巡回する技術です。
クローリングをするプログラムをクローラーとも呼びます。
クローリングが活用されている有名な例は、Google検索。
非常に高度なアルゴリズムにより、様々な検索結果を表示しています。

Webスクレイピングについて
Webスクレイピングは、HTMLから自分が欲しいと思うデータを取得すること。
これを行うプログラムをスクレイパとも呼びます。
Web上のデータを取得する上では、欠かせない技術となっています。
クローラにより、自分が欲しいと思うデータのあるWebサイトにアクセスし、スクレイパによって情報を取得していくという流れです。
スクレイピングをする前に
スクレイピングは、HTMLとCSSを知っておかなければ、何もできません。
そのため、自信のない人は「Progate」などで復習、または学習しましょう。
また、Selenium(セレニウム)を使ってのスクレイピングやDOM解析には、JavaScriptの知識が必要になる事がよくあります。
JavaScriptについてよく知っておくのも、スクレイピングに役立ちます。
スクレイピングを行う際の注意点
スクレイピングは、禁止しているサイトではやらないようにしましょう。
また、サイトに過度にアクセスをすると、法に反することもあります。
実際に、過度なスクレイピングにより逮捕されているケースもあります。
最悪の事態にならないよう、スクレイピングを禁止していないかを確認したり、過度なアクセスをするプログラムではないかを確認しましょう。
スクレイピングのオススメの言語
スクレイピングをするのに使用する言語は、にゃんこ師匠的にはPythonをおすすめします。
なぜなら、Pythonはスクレイピング関連のライブラリが豊富だからです。
ただ、Webアプリケーションに使用している言語によっても、使用すべき言語が変わります。
(PHPで作られているのなら、PHPでスクレイピングをするということです。)


Requestsでのスクレイピングのやり方
それでは、スクレイピングのやり方について見ていきましょう。
今回は、Pythonを使う前提でお話していきます。
Requestsで、Webページを取得する
「Requests」は、PythonのライブラリでHTTPの通信を行うことができます。
人間のためのHTPPと言われるほど高度で使いやすいライブラリです。
Requestsを使うためには、pipでライブラリをインストールする必要があります。
当たり前ですが、pip や Python の環境がない方は、先にそちらを準備する必要があります。
Requestsをインストール
以下のコードで、ライブラリをインストールできます。
1 | pip install requests |
pip3をインストールされている方は、pipの箇所をpip3とコマンドを打つ必要があります。
pipに問題がなければ、難なくインストールできるはずです。
Requestsの基本的な使い方
では、実際に、Requestsでページを取得してみましょう!
今回は、人気WebメディアであるGigazineのページを取得してみました。
1 2 3 4 5 6 7 8 9 | import requests url = "https:gigazine.net/" info = requests.get(url) print(info.headers) print(info.content) |
get()関数でurlを指定すれば、そのページの情報を取得できます。
ちなみに出力しているものは、ヘッダー情報とbody以下のコンテンツです。
headersで「header情報」を、contentで「body以下のコンテンツ」を取得できます。
BeautifulSoupで、データを取得する
Requestsでwebページを取得したら、ページの解析をする必要があります。
その時に用いるのが、BeautifulSoup。
インストール
それでは、まず、BeautifulSoupをインストールしましょう。
1 | pip install beautifulsoup4 |
Requestsと併用してBeautiful Soupを使う
「Requests」と「Beautiful Soup」は、よく併用して使われます。
では、実際に、Requests と Beautiful Soup を使って、Gigazineのデータを取得してみたいと思います。
1 2 3 4 5 6 7 8 9 | import requests from bs4 import BeautifulSoup response = requests.get("https://gigazine.net/") data = BeautifulSoup(response.content,"html.parser") #gigazineの記事一覧を出力 print(data.find("section")) |
まず、Requests によりGigazineのページを取得し、BeautifulSoup によってhtmlファイルを解読していきます。
そして最後に、sectionタグを見つける処理を行い、出力しています。
ブラウザを操作しながら、スクレイピング!?
Requests と BeautifulSoup では、ログインが必要なサイトやDOM解析に時間がかかるサイトでは、スクレイピングが困難です。
その際には、Selenium がおすすめです。
ブラウザ操作でスクレイピングをするため、ログインが必要なサイトでも簡単にデータを取得できます。
また、ボタンをクリックしないと出てこないデータ等がある場合、仮想ブラウザでクリックイベントを発することで、クリックした後のデータを取得できます。
Requests では、Bot判定される確率が高く、セキュリティ面が強固なサイトでは出来ないケースが多々あります。
ですが、Selenium は仮想ブラウザを操作し、データを取得していくため、Bot判定にかかりにくいのです。


Seleniumのサンプルコード
Webブラウザを立ち上げた後、Google検索で、Webスクレイピングという文字で検索をします。
注意すべき点は、処理を大量に詰め込むとサーバーに負担がかかります。
処理が多いプログラムでは time.sleep() を使うことで、時間を空けながら行うプログラムにするのが良いでしょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 | from selenium import webdriver driver = webdriver.Chrome() driver.get("https://www.google.com/") search = driver.find_element_by_name("q") search.send_keys("Webスクレイピング") search.submit() driver.quit() |
初心者にオススメの本
さいごに
RequestsとBeautifulSoupを使えば、簡単にWebサイトのデータを集めることができます。
ログインが必要であるときなど、BeautifulSoup でデータを解析出来ない場合は、Selenium を使いましょう。
このように、用途や状況によって BeautifulSoup と Selenium を使えば、なお一層スクレイピングがはかどりますね!
こちらの記事もオススメ!
さいごの一言


書いた人はこんな人

- 「好きなことを仕事にするエンジニア集団」の(株)ライトコードです!
ライトコードは、福岡、東京、大阪の3拠点で事業展開するIT企業です。
現在は、国内を代表する大手IT企業を取引先にもち、ITシステムの受託事業が中心。
いずれも直取引で、月間PV数1億を超えるWebサービスのシステム開発・運営、インフラの構築・運用に携わっています。
システム開発依頼・お見積もりは大歓迎!
また、WEBエンジニアとモバイルエンジニアも積極採用中です!
ご応募をお待ちしております!
ITエンタメ2022.06.22IntelliJ IDEAとkotlinを送り出したJetBrains創業物語
ITエンタメ2022.06.15【アタリ創業者】スティーブ・ジョブズを雇った男「ノーラン・ブッシュネル」
ITエンタメ2022.06.13プログラミングに飽きてPHPを開発したラスマス・ラードフ
ITエンタメ2022.06.03【Unity開発秘話】ゲーマーを開発者にしてしまうゲームエンジン