こんにちは!
消費財メーカーでデータサイエンス・デジタルマーケティングに携わっているウマたん(@statistics1012)です!
Webサイトのテキスト情報を抽出したい時に非常に便利なのがスクレイピングという技術。
いやいや、実はPythonを使えばスクレイピングが簡単に実装できるんです。
Python初心者でも簡単に実装できるのでおすすめ!
この記事では、
・スクレイピングとは何なのか
・Pythonでの実装
を見ていきたいと思います。
ここでのPython実装では初心者向けに本当に簡易的な実装しか行いませんが、ここで学んだことを土台にして実際に色々なスクレイピングを行ってみてくださいね。
以下の動画でも詳しく解説していますよ!
目次
スクレイピングとは

スクレイピングは、Webサイトから自動的にテキスト情報を抽出する技術。
毎回手動でデータを引っ張ってくるのは非常に面倒であるため、スクレイピングを使って自動でデータを引っ張ってくることが多いです。
非常に応用の範囲が広い技術で、様々な場面で用いられています。
例えば、スクレイピングを使うことで株価の情報などを自動的に日々抽出して自動売買するなど応用が可能です。
スクレイピングに必要な知識・技術

さて、そんなスクレイピングですがどのような技術があれば実装が可能なのでしょうか?
Pythonの技術
スクレイピングはPythonの「Requests」「beautifulsoup」「selenium」というライブラリを使えば簡単に実装可能です。
スクレイピング後のデータに関してもPythonを用いて、解析を行うことが多いでしょう。
例えば、スクレイピングしたテキストデータを自然言語処理にかけて文書一致度を計算するなどができます。

簡単に実装可能ですが、Pythonの技術はある程度必要です。
HTMLにおけるDOMの知識
実装はPythonを用いて行いますが、HTMLの構造そしてDOMについて理解しておくことが必要です。
DOMはドキュメントオブジェクトモデルの略で、HTMLを外部から操作するような仕組み・Webサイトの構造のことを表します。
HTMLでは、bodyタグやheadタグなど様々なタグを用いて階層構造を取ります。
そのタグの中にidやclassを記述することで、様々な表現が可能。そのidやclass、そしてタグを指定してスクレイピングを行うためHTML・DOMの知識が必要なのです。
コーディングするわけではないため、技術は必要ありませんがソースを読んで理解できるレベルの知識は必要になってきます。
スクレイピングの注意点

スクレイピングを行う際はいくつか注意点があるので確認しておきましょう!
スクレイピングが禁止されていないかどうか確認する
スクレイピングは、非常に便利な技術だけに悪用される可能性もあります。
そのためWebサイトによってはスクレイピングを禁止している場合があります。
スクレイピングが禁止されていないかどうか確認して行うようにしましょう!
スクレイピングによって負荷をかけないようにする
スクレイピングを頻繁に行うとサーバーに負荷をかけることになります。
そのため頻繁にリクエストを送らないようにsleepメソッドを使用してリクエストの時間を空けるようにしましょう!
スクレイピングをPythonで実装

それでは、Pythonを用いてスクレイピングを実装していきましょう!
この記事では、特定URLのpタグに囲まれた本文テキストを抽出する簡易的なコードを実装していきます。
まずは、ライブラリをインポートしていきましょう!
1 2 3 4 | #ライブラリーインポート import requests from bs4 import BeautifulSoup from time import sleep |
sleepはスクレイピングのタイミングを制御します。
Webスクレイピングはサーバーに負荷をかけるため、処理を制御する配慮が暗黙のルールとなっています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | #スクレイピング class Scr(): def __init__(self, urls): self.urls=urls def geturl(self): all_text=[] for url in self.urls: r=requests.get(url) c=r.content soup=BeautifulSoup(c,"html.parser") article1_content=soup.find_all("p") temp=[] for con in article1_content: out=con.text temp.append(out) text=''.join(temp) all_text.append(text) sleep(1) return all_text |
ここがスクレイピングの本体です。
クラスで定義しています。
URLを配列に格納して渡すと、pタグに囲まれたテキスト情報を配列に格納して返してくれるクラスScrを作りました。
URLを複数入れても複数データで返してくれます。
requestsはURLにアクセスして引っ張ってくるライブラリ。
そこからBeautifulsoupでタグを指定してテキストを取得します。
soup.find_all(“p”)の部分でタグを指定しており、今回はpタグを全て引っ張ってくる指定をしています。
ここの部分を変更することで抽出するタグを変更することができます。
1 2 | sc=Scr(["https://toukei-lab.com/conjoint","https://toukei-lab.com/correspondence"]) print(sc.geturl()) |
最後に当サイトのコレスポンデンス分析の記事をスクレイピングしていきます。
・・・

だいぶ雑ですが、テキストがリストに格納されていることが分かります。
これでスクレイピングは終了!
最後にコードをまとめておきます!
初心向けのPythonスクレイピング勉強法
スクレイピングはPythonで行えることの中でも比較的分かりやすく実装がカンタンな領域です。

ただ、奥が深くスクレイピングしたデータをどのように扱うかで色んな幅が広がります。
また、本記事で使用したライブラリはBeautifulsoupですが、Seleniumも有名です。
もしスクレイピングを勉強したいなら以下のUdemy講座がおすすめ!
PythonによるWebスクレイピング〜入門編〜【業務効率化への第一歩】

【オススメ度】 | |
---|---|
【講師】 | キカガクの執行役員。機械学習や統計を大学専攻 |
【時間】 | 2.5時間 |
【レベル】 | 初級 |
キカガクの執行役員で学生時代に機械学習や統計を専攻していた方が講師です。
若い先生ですが、非常に落ち着いていて分かりやすい!
内容は、スクレイピングのサイトを使って進みます(このコース用に作られたコースで非常に分かりやすい!)
サイトの中にサンプルコードもあるのでそれを参考にしながら進めることが可能です。
Pythonでスクレイピングと言えば、seleniumとBeautifulsoupがありますが、本コースではseleniumを使ってスクレイピングをおこなっていきます。
ChromeのバージョンとDriverのバージョンを揃えないと上手くいかないから要注意!
スクレイピングにおいて基本中の基本の内容だが講師の教え方分かりやすく納得の内容
画像のスクレイピングも学べます。
ディベロッパーツールの使い方や、HTML/CSSの知識があると非常にスムーズに学べます。
PythonによるWebスクレイピング 〜Webアプリケーション編〜

【オススメ度】 | |
---|---|
【講師】 | キカガクの執行役員。機械学習や統計を大学専攻 |
【時間】 | 4.5時間 |
【レベル】 | 初級 |
先ほどと同じくキカガクの講師です。
こちらは、本記事でも取り上げたBeautifulsoupを使ってスクレイピングをしていきます。
このコースの特徴はHerokuというサービスを利用してスクレイピングアプリを実際にデプロイしていくところ!
スクレイピングのスキルだけでなく、そこから先のDashでの可視化・Webアプリケーション開発までのスキルが身に付きます。
ちなみに本サイトでもHerokuでのWebアプリケーション開発まわりはまとめていますのでチェックしてみてください!


ここら辺を学んでおいて、後は自分で実際に手を動かして色々スクレイピングしてみるのがオススメです!
Pythonでスクレイピング まとめ
スクレイピングについて見てきました。
スクレイピングは、様々な分野に応用が可能な非常に有用な技術です。
PythonのスキルとHTMLの知識で簡単に実装可能なので是非試してみてください!
Pythonはデータ解析やスクレイピングそしてWebアプリケーション作成まで出来る幅広いプログラミング言語!
以下の記事で初心者がPythonを習得する方法についてまとめていますのでよければご覧ください!
