「Pythonでのスクレイピングのやり方がよくわからない」
本記事ではこのような悩みを解決します。
Pythonの基礎をひと通り勉強したら、次にやりたいのがスクレイピングです。スクレイピングができるとPythonで作ったプログラムを日常生活に役立たせることもでき、プログラミングの楽しさがわかることでしょう。
本記事ではスクレイピングのやり方を1から説明していきます。基本的に本記事の通りに行えばスクレイピングが可能になります。
ぜひPythonでのスクレイピングを試してみて、プログラミングの楽しさを実感してみてくださいね。
Webスクレイピングとは
スクレイピングとは、webページから情報を抽出することを言います。取得した情報は、エクセルなどにまとめて利用することができます。
たとえば天気予報について書かれたページからデータを取得し、天気の情報をエクセルにまとめるとします。このときサイトからエクセルに手でコピペすると、時間がかかってしまいますよね。
Pythonを使えば、webページをスクレイピングし、データを自動で取ってくることができます。一度Pythonで自動化してしまえば、後はプログラムが勝手に情報を取ってきてくれるようになり、大幅に作業が効率化できます。
このように自動的にwebページの情報を取ってくることをスクレイピングと言います。
Webスクレイピングでできること
webスクレイピングは天気予報の情報をまとめる以外にも、たとえば以下のようなことができます。
- webサイトの検索順位を取得して、どんなサイトが上位に来るか分析する
- 日経平均株価から株価推移を抽出しまとめる
- ECサイトから商品のレビューを抽出してまとめる
このようにwebから情報を抽出し、自分のパソコン上でまとめることが可能です。
まとめたデータは商品の売上アップや検索順位アップに利用することができます。
スクレイピングする際の注意点
サイトによってはスクレイピングが禁止されている場合があります。
禁止かどうかは利用規約に書かれていることがほとんどです。たとえばTwitterのサービス利用規約にはスクレイピング禁止が明記されていますね。
なぜ禁止されるかというと、多くの人がスクレイピングした場合にはサイトに負荷がかかってしまう恐れがあるからです。
自分がスクレイピングしたいサイトがスクレイピングを禁止していないかどうかは、事前に確認するようにしましょう。特にTwitterのように会員登録が必要なサイトは気をつけた方が良いですね。
PythonでWebスクレイピングをするには
それでは、Pythonでスクレイピングをする方法を1から解説していきますね。
まずは準備しておかないといけないことがいくつかあります。
- importについて理解する
- requestsモジュールを使えるようにする
- BeautifulSoupモジュールを使えるようにする
以上、3つについて確認をしましょう。
importについて理解する
スクレイピングを行うにはPythonの「import」という機能を利用する必要があります。
importとは、既存のモジュールを自分のプログラムでも使えるようにすることです。
「モジュール」とは、プログラムの部品のようなものです。Pythonではコードに「import モジュール名」と記述することでそのモジュールを利用できます。
スクレイピングではrequestsモジュールとBeautifulSoupモジュールが必要になります。
この2つの部品をインストールし、自分のプログラムで使えるようにしないといけません。
Pythonのimportについてはこちらの記事で詳しく解説しています!

requestsモジュールを使えるようにする
requestsモジュールは、webサイトの情報を取得するためのモジュールです。これがないとスクレイピングを行うことはできません。
まずは自分のパソコンにrequestsモジュールをインストールする必要があります。インストールするには、コマンドプロンプトやターミナルなどのコマンドラインに以下のコマンドを打ちましょう。
pip3 install requests
これで自分のパソコンでもrequestsモジュールが使えるようになりました。
インストールしたrequestsモジュールを使うには、ソースコードの一番上に次のように書きます。
import requests Z
これでプログラム内でrequestsモジュールを使えるようになりました。
BeautifulSoupモジュールを使えるようにする
BeautifulSoupモジュールとは、HTMLからデータを取り出すためのモジュールです。
requestsモジュールを使用すると、HTML文としてデータが取得されます。BeautifulSoupを使って、そこから必要なデータを取り出す必要があるのです。
HTMLからデータを取り出すのはモジュールを使わなくても可能ですが、使った方が楽なのでぜひこちらの方法を活用できるようにしましょう。
requestsモジュールと同じように、まずはモジュールをインストールする必要があります。以下のコマンドをコマンドラインに打って、BeautifulSoupモジュールをインストールしましょう。
pip3 install beautifulsoup4
インストールできたら、同じくソースコードの上部にimport文を書くことによってモジュールを使えるようにします。
from bs4 import BeautifulSoup
これでBeautifulSoupモジュールも使えるようになりました。
後はプログラムを書いていくだけです。
実践方法・具体例
準備ができたところで、実際にスクレイピングのやり方について見ていきましょう。
基本的には本記事のコードを使うだけでスクレイピングができます。本記事のコードを試してみたら、後は自分で変更してみてください。
requestsモジュールを使う
まずはrequestsモジュールを使って、webページのデータを取得しましょう。
requestsモジュールにはメソッドがいくつか用意されており、webページ取得に関する様々なことが行えます。
ここではgetメソッドを利用します。ソースコードに次のように記述してください。
import requests
from bs4 import BeautifulSoup
site = requests.get(‘https://www.google.com’)
print(site)
■実行結果
<Response [200]>
getメソッドは、引数にURLを指定することで、webページにアクセスしてサーバーからのレスポンスを取得します。
ここでは試しにグーグルのトップページのデータを取得してみました。しかし、出力結果を見てもわかるように、このままprintしてもサイトデータを確認することはできません。
実行結果の「200」という数字はステータスコードと呼ばれるものであり、サイトに正常にアクセスできていることを示します。
サイトデータを正しく出力するにはprint関数の引数に「.text」をつける必要があります。
import requests
from bs4 import BeautifulSoup
site = requests.get(‘https://www.google.com’)
print(site.text)
■実行結果
これでサイトのデータをHTMLとして出力することができました。
BeautifulSoupモジュールを使う
HTMLを取得したら、次はそのHTMLからデータを引き出していきます。データを引き出すにはBeautifulSoupモジュールを利用します。
先ほどのコードを以下のように変更しましょう。
import requests
from bs4 import BeautifulSoup
site = requests.get(‘https://www.google.com’)
data = BeautifulSoup(site.text, ‘html.parser’)
print(data.title)
printf(data.title.text)
■実行結果
「BeautifulSoup(データ, ‘html.parser’)」と記述することで、HTMLからデータを引き出すことができます。引き出したデータに「.title」とつけるとHTMLのタイトルを取得することができます。
また、「.title.text」とするとタイトルタグの中身のみを取得することができます。基本的に、「.text」をつければタグの中身だけを取れるので、ぜひ覚えておきましょう。
このようにして、BeautifulSoupを使ってサイトからデータを取ってきます。
サンプルコード
以下にスクレイピングのサンプルコードをまとめました。
上記の例ではタイトルのみ取得しましたが、他にも特定のタグを取得したり、特定のテキストを探して取得したり、様々なことができます。
ここではいくつかのやり方をサンプルコードとして掲載しておきますので、ぜひ参考にしてくださいね。
from bs4 import BeautifulSoupsite = requests.get(‘https://www.google.com’)data = BeautifulSoup(site.text, ‘html.parser’)print(data.title) #タイトルを出力する
print(data.title.text) #タイトルタグの中身のみを出力する
print(data.find_all(‘a’)) #すべての「a」タグを出力する
print(data.find(id=’id_name’)) #id属性「id_name」に一致するタグを出力する
print(data.find(text=’Google’)) #特定のワード「Google」に完全一致する文字列を出力する
Pythonの個別指導なら『Tech Teacher』
引用元:Tech Teacher
このBlogを運営するTech Teacherは、Pythonを学習する社会人を対象に、初心者から挫折した人まで、一人ひとりの目的や学習状況にあわせた個別指導を行っています。
また、オンライン指導も選べるので、自宅でも対面でも受講できます。
一人ひとりに最適化された完全マンツーマン指導を提供
完全マンツーマン指導で着実に身につく!
Tech Teacherでは専任の教師が完全マンツーマン指導を行います。
学習状況や目標をしっかり把握した教師が、生徒様のご要望もふまえながら最適なオーダーメイドの指導をご提供します。
お仕事と両立しながら続けられる!
Tech Teacherなら、受講日時や回数を生徒様のご都合に合わせて柔軟に調整することができます。
そのため、お仕事との両立がしやすく、プログラミング学習を継続的に学習することができます。忙しい合間にプログラミングを学びたいという方におすすめです。
授業料は受けた分だけ!
Tech Teacherでは、生徒様が受けた授業の時間分だけ後払いで請求させていただきます。そのため、気軽にプログラミングの学習を始めることができます。
以下のボタンからさらに詳しい情報をご覧いただけます。
まとめ
本記事では、Webスクレイピングの方法について解説しました。スクレイピングはこのようにやり方さえわかれば簡単にできます。
後は自分でソースコードを変更するなどして、スクレイピングを楽しんでみてくださいね。スクレイピングができるようになれば、Pythonでできることの幅が広がります。
ぜひスクレイピングのやり方を習得し、実務で使えるようになってくださいね。
このブログでは他にもPythonの学習に役立つ情報を発信しています!ぜひご覧ください。


