Python

【初心者向け】Pythonのbeautifulsoupでスクレイピングを実装してみよう!

PC
ウマたん
ウマたん
本記事では、初心者向けにPythonでスクレイピングを行う上での注意点や実装方法そして勉強方法についてまとめていきます!スクレイピングは比較的カンタンに実装できますが、奥が深く他の知識と組み合わせることで高いシナジーが見込める分野です。

こんにちは!

消費財メーカーでデータサイエンス・デジタルマーケティングに携わっているウマたん(@statistics1012)です!

Webサイトのテキスト情報を抽出したい時に非常に便利なのがスクレイピングという技術。

ロボたん
ロボたん
だけど、実装するの難しそう・・・

いやいや、実はPythonを使えばスクレイピングが簡単に実装できるんです。

Python初心者でも簡単に実装できるのでおすすめ!

ウマたん
ウマたん
スクレイピングは非常にカンタンで便利!ぜひこの機会にマスターしよう!

この記事では、

・スクレイピングとは何なのか
・Pythonでの実装

を見ていきたいと思います。

ここでのPython実装では初心者向けに本当に簡易的な実装しか行いませんが、ここで学んだことを土台にして実際に色々なスクレイピングを行ってみてくださいね。

スクレイピングとは

PC

スクレイピングは、Webサイトから自動的にテキスト情報を抽出する技術。

毎回手動でデータを引っ張ってくるのは非常に面倒であるため、スクレイピングを使って自動でデータを引っ張ってくることが多いです。

非常に応用の範囲が広い技術で、様々な場面で用いられています。

例えば、スクレイピングを使うことで株価の情報などを自動的に日々抽出して自動売買するなど応用が可能です。

スクレイピングに必要な知識・技術

さて、そんなスクレイピングですがどのような技術があれば実装が可能なのでしょうか?

Pythonの技術

スクレイピングはPythonの「Requests」「beautifulsoup」「selenium」というライブラリを使えば簡単に実装可能です。

スクレイピング後のデータに関してもPythonを用いて、解析を行うことが多いでしょう。

例えば、スクレイピングしたテキストデータを自然言語処理にかけて文書一致度を計算するなどができます。

PC
PythonのMeCabで形態素解析!文書の類似度を算出してみよう!当サイト【統計ラボ】の本記事では、形態素解析器であるMeCabと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タグに囲まれた本文テキストを抽出する簡易的なコードを実装していきます。

まずは、ライブラリをインポートしていきましょう!

sleepはスクレイピングのタイミングを制御します。

Webスクレイピングはサーバーに負荷をかけるため、処理を制御する配慮が暗黙のルールとなっています。

ここがスクレイピングの本体です。

クラスで定義しています。

URLを配列に格納して渡すと、pタグに囲まれたテキスト情報を配列に格納して返してくれるクラスScrを作りました。

URLを複数入れても複数データで返してくれます。

requestsはURLにアクセスして引っ張ってくるライブラリ。

そこからBeautifulsoupでタグを指定してテキストを取得します。

soup.find_all(“p”)の部分でタグを指定しており、今回はpタグを全て引っ張ってくる指定をしています。

ここの部分を変更することで抽出するタグを変更することができます。

最後に当サイトのコレスポンデンス分析の記事をスクレイピングしていきます。

・・・

スクレイピング結果

だいぶ雑ですが、テキストがリストに格納されていることが分かります。

これでスクレイピングは終了!

最後にコードをまとめておきます!

初心向けのPythonスクレイピング勉強法

スクレイピングはPythonで行えることの中でも比較的分かりやすく実装がカンタンな領域です。

Python-can
Pythonでできること6つをコード例をまじえてまとめておく!本記事では、Pythonでできることを6つまとめていきます!!Pythonで何ができるのか分からない状況から深い理解にもっていきますよー!実際にPythonでの実装例や勉強方法も取り上げているのでぜひご自分の環境で手を動かして実装してみてくださいね!...

ただ、奥が深くスクレイピングしたデータをどのように扱うかで色んな幅が広がります。

また、本記事で使用したライブラリはBeautifulsoupですが、Seleniumも有名です。

もしスクレイピングを勉強したいなら以下のUdemy講座がおすすめ!

PythonによるWebスクレイピング〜入門編〜【業務効率化への第一歩】

Udemy コース Webスクレイピング
【オススメ度】
【講師】キカガクの執行役員。機械学習や統計を大学専攻
【時間】2.5時間
【レベル】初級

キカガクの執行役員で学生時代に機械学習や統計を専攻していた方が講師です。

若い先生ですが、非常に落ち着いていて分かりやすい!

内容は、スクレイピングのサイトを使って進みます(このコース用に作られたコースで非常に分かりやすい!)

サイトの中にサンプルコードもあるのでそれを参考にしながら進めることが可能です。

Pythonでスクレイピングと言えば、seleniumとBeautifulsoupがありますが、本コースではseleniumを使ってスクレイピングをおこなっていきます。

ChromeのバージョンとDriverのバージョンを揃えないと上手くいかないから要注意!

スクレイピングにおいて基本中の基本の内容だが講師の教え方分かりやすく納得の内容
画像のスクレイピングも学べます。

ディベロッパーツールの使い方や、HTML/CSSの知識があると非常にスムーズに学べます。

 

\30日間返金無料/

PythonによるWebスクレイピング 〜Webアプリケーション編〜

Udemy コース Webスクレイピング
【オススメ度】
【講師】キカガクの執行役員。機械学習や統計を大学専攻
【時間】4.5時間
【レベル】初級

先ほどと同じくキカガクの講師です。

こちらは、本記事でも取り上げたBeautifulsoupを使ってスクレイピングをしていきます。

このコースの特徴はHerokuというサービスを利用してスクレイピングアプリを実際にデプロイしていくところ!

スクレイピングのスキルだけでなく、そこから先のDashでの可視化・Webアプリケーション開発までのスキルが身に付きます。

ちなみに本サイトでもHerokuでのWebアプリケーション開発まわりはまとめていますのでチェックしてみてください!

macとsurface
PythonのFlaskで簡単なWebアプリケーションを作ってみよう!当サイト【統計ラボ】の本記事では、Pythonの軽量WebアプリケーションフレームワークであるFlaskを使って簡単なWebアプリケーションを作成していきたいと思います。Pythonを開発言語としても使えるようになると、幅が広がりますよー!...
heroku
herokuを使ってPythonのflaskで作ったアプリケーションをデプロイする方法当サイト【統計ラボ】の本記事では、PythonのWebフレームワークであるFlaskを使って作成したWebアプリケーションをインターネット上に公開するためにHerokuというサービスを使ってデプロイしていきます。Herokuを使えば簡単にWebアプリケーションを公開することが可能なんです。...

 

\30日間返金無料/

ここら辺を学んでおいて、後は自分で実際に手を動かして色々スクレイピングしてみるのがオススメです!

Pythonでスクレイピング まとめ

スクレイピングについて見てきました。

スクレイピングは、様々な分野に応用が可能な非常に有用な技術です。

PythonのスキルとHTMLの知識で簡単に実装可能なので是非試してみてください!

Pythonはデータ解析やスクレイピングそしてWebアプリケーション作成まで出来る幅広いプログラミング言語!

以下の記事で初心者がPythonを習得する方法についてまとめていますのでよければご覧ください!

【独学入門】初心者が3か月でPythonを習得できるようになる勉強法!当ブログ【統計ラボ】の本記事では、Pythonを効率よく独学で習得する勉強法を具体的なコード付き実装例と合わせてまとめていきます。Pythonはできることが幅広いので自分のやりたいことを明確にして勉強法を選ぶことが大事です。...
Pythonを初学者が最短で習得する勉強法

Pythonを使うと様々なことができます。しかしどんなことをやりたいかという明確な目的がないと勉強は捗りません。

Pythonを習得するためのロードマップをまとめましたのでぜひチェックしてみてくださいね!