
【初心者向け】Webスクレイピングのやり方を徹底解説
2020.09.15
目次
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 を使えば、なお一層スクレイピングがはかどりますね!
記事を書いた人
システム開発依頼・お見積もりはこちらまでお願いします。
また、WEB・アプリ・ゲーム系エンジニアを積極採用中です!
こちらの記事もオススメ!
さいごの一言


ライトコードよりお知らせ






一緒に働いてくれる仲間を募集しております!
ライトコードでは、仲間を募集しております!
当社のモットーは「好きなことを仕事にするエンジニア集団」「エンジニアによるエンジニアのための会社」。エンジニアであるあなたの「やってみたいこと」を全力で応援する会社です。
また、ライトコードは現在、急成長中!だからこそ、あなたにお任せしたいやりがいのあるお仕事は沢山あります。「コアメンバー」として活躍してくれる、あなたからのご応募をお待ちしております!
なお、ご応募の前に、「話しだけ聞いてみたい」「社内の雰囲気を知りたい」という方はこちらをご覧ください。
ライトコードでは一緒に働いていただける方を募集しております!
採用情報はこちら書いた人はこんな人

IT技術2021.01.11React Hooks登場でコンポーネントはどう変わった?
IT技術2021.01.05【Unity】Rigidbodyの基本
IT技術2021.01.04【Unity】ARkit3を使ったARアプリを開発する方法を解説(AR foundation,iOS)
IT技術2020.12.29【機械学習】単純なアルゴリズムで迷惑メールを分類してみた