前回は、Pythonをしようして簡単なプロジェクトの実行を行いました。
【プログラミング】ChatGPT活用!Pythonプロジェクトの仮想環境設定、今回は、Pythonでスクレイピングをやっていきます。
スクレイピングは、ウェブ上の情報を自動的に取得するための強力なツールです。この入門ガイドでは、ChatGPTを活用して、Pythonでのスクレイピングの基本から実践までをわかりやすく解説します。ステップバイステップで進めるので、プログラミング初心者でも安心して学べます。これを機に一緒にデータ収集の世界へ一歩踏み出してみましょう。
Pythonの始め方についてはこちらの記事を参考にしてみてください!!
参考記事
ブログ内のコードはコピーして使用できます
スクレイピングって何?
スクレイピングとは、ウェブサイトから自動的に情報を集める技術のことです。たとえば、あるウェブサイトにたくさんのデータが載っているときに、そのデータを一つ一つ手でコピーするのは大変ですよね。スクレイピングを使えば、プログラムがその作業を自動で行ってくれるので、時間を節約できるんです。Pythonというプログラミング言語を使って、こうしたデータを簡単に集めることができます。
実際にスクリピングでデータの収集をしてみよう
スクレイピングを使えば、ウェブサイトから欲しい情報が手軽に手に入れられます。このガイドでは、Pythonを使って実際にスクレイピングを行い、ウェブ上のデータを自動で集める方法を解説します。
コードややり方についてはChatGPTにアシスタントをしてもらいながら進めていきます。
データを収集するメリット
1. データ収集と分析
多くのウェブサイトには有益な情報が掲載されていますが、それらの情報は手動で収集するには時間がかかります。ウェブスクレイピングを使うことで、自動的にウェブサイトからデータを収集し、後で分析することができます。
- 価格比較: 複数のショッピングサイトから商品の価格情報を収集して比較する。
- 株価データ収集: 金融サイトから株価のデータを定期的に収集し、トレンドを分析する。
- ニュース集約: ニュースサイトから最新の記事や見出しを収集して、特定のトピックに関する情報を集約する。
2. 自動化されたレポート作成
ウェブからデータを取得して、定期的なレポートを自動的に生成することができます。これにより、手作業でのデータ入力や整理の手間が省けます。
- SEOレポート: ウェブサイトの検索エンジン順位を定期的に取得し、レポートにまとめる。
- 天気情報のレポート: 気象サイトから天気予報を取得し、自分の地域や旅行先の天気を自動的にレポート化する。
3. データベースの更新
ウェブから取得した情報を使って、自分のデータベースやリストを更新することができます。これにより、データが最新の状態に保たれます。
- 企業情報の更新: 企業の公式サイトから最新の連絡先情報や役員情報を取得し、データベースを更新する。
- 製品リストの更新: メーカーのサイトから新製品や仕様変更の情報を取得し、製品カタログを更新する。
4. 自動化されたタスク
ウェブスクレイピングを使って、ウェブサイト上での繰り返しタスクを自動化することもできます。これにより、時間を節約し、効率を上げることができます。
- 求人情報の監視: 求人サイトから新しい求人情報を定期的に取得し、自動的に通知を受け取る。
- イベントの登録: イベントサイトで新しいイベントが公開されたら自動的に登録する。
スクレイピングをする前に環境設定を忘れずにやっておきましょう
タイトルテキスト
ステップ1: 必要なライブラリのインストール
まずは、仮想環境がアクティブな状態で、必要な2つのライブラリをインストールします。
requests
- ウェブページからデータを取得するためのライブラリです。これを使うと、Pythonからウェブサイトにアクセスして、その内容(HTMLなど)を取得することができます。
1 |
pip install requests |
beautifulsoup4
- 取得したHTMLデータを解析し、特定の情報(例えば、タイトルやリンク)を抽出するためのライブラリです。
1 |
pip install beautifulsoup4 |
pip install requests beautifulsoup4
というコマンドを実行すると、これら2つのライブラリがインストールすることもできます。
1 |
pip install requests beautifulsoup4 |
ライブラリのインストールの確認
1 |
pip list |
pip listを使って確認してみましょう!!
インストールできていると以下の状態になります。
できていない場合はこのように出てきます。
ステップ2: ウェブページからデータを取得
次に、Pythonコードを使ってウェブページのデータを取得してみましょう。今回は、例として「https://example.com」というシンプルなサイトからデータを取得します。
1 2 3 4 5 6 7 8 9 10 |
import requests # ウェブページのURL url = 'https://example.com' # ウェブページを取得 response = requests.get(url) # レスポンスの内容を確認 print(response.text) |
出力
HTMLでデータを取得する理由
response.text
で取得したページの内容がHTMLとして表示されるのには、いくつか重要な理由があります。
1. ウェブページの構造
ウェブページはHTML(HyperText Markup Language)という言語で書かれています。HTMLは、ウェブページの内容を構造化するための言語で、テキスト、画像、リンク、ボタンなど、ページに表示されるさまざまな要素がどのように配置され、表示されるかを指定します。
1 2 3 4 5 6 7 8 9 10 11 |
<!DOCTYPE html> <html> <head> <title>Example Page</title> </head> <body> <h1>Hello, World!</h1> <p>This is an example paragraph.</p> <a href="https://example.com">Visit Example.com</a> </body> </html> |
2. 必要な情報を抽出するため
ウェブスクレイピングの目的は、ウェブページから特定の情報を抽出することです。HTMLを解析することで、ページ内のどこにその情報があるかを見つけ出し、その情報を取り出すことができます。
- タイトルを取得:
<title>
タグの中のテキストを取得して、ページのタイトルを抽出します。 - リンクを取得:
<a>
タグのhref
属性を読み取って、ページ内の全てのリンクをリストアップします。
3. ウェブページの再現と理解
HTMLをそのまま取得することで、ウェブページがどのように構造化されているか、そしてどの部分にどのようなデータが含まれているかを理解することができます。これにより、どの部分からデータを抽出するかを決めやすくなります。
4. JavaScriptによる動的なコンテンツ
一部のウェブサイトは、JavaScriptを使って動的にコンテンツを生成します。この場合、response.text
で取得できるHTMLには、JavaScriptが実行される前の状態が含まれます。そのため、必要なデータがそのHTML内にない場合、JavaScriptがどのようにデータを生成しているかを理解する必要があります。
ステップ3: データの解析と抽出
取得したHTMLデータから、特定の情報を抽出するためにBeautifulSoup
を使用します。まず、ページのタイトルを取得してみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
import requests from bs4 import BeautifulSoup # ウェブページのURL url = 'https://example.com' response = requests.get(url) # BeautifulSoupを使ってHTMLを解析 soup = BeautifulSoup(response.text, 'html.parser') # ページのタイトルを取得 title = soup.title.string print("タイトル:", title) |
出力
1 |
タイトル: Example Domain |
ステップ4: 抽出したデータの表示または保存
次に、ページ内の全てのリンクを取得して、links.txt
というファイルに保存するコードを書いてみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
import requests from bs4 import BeautifulSoup # ウェブページのURL url = 'https://example.com' response = requests.get(url) soup = BeautifulSoup(response.text, 'html.parser') # ページ内の全てのリンクを取得 links = soup.find_all('a') # リンクをファイルに保存 with open('links.txt', 'w') as file: for link in links: href = link.get('href') if href: file.write(href + '\n') |
出力
今回取得したデータについて
スクレイピングでhttps://www.iana.org/domains/example
から取得したデータは、そのウェブページのHTMLコード全体です。このHTMLには、ページの構造、コンテンツ、リンクなど、ウェブページに表示されているすべての要素が含まれています。
具体的に何を取得したのか?
スクレイピングによって取得したのは、https://www.iana.org/domains/example
のウェブページがブラウザで表示される前の「生データ」です。このデータには以下のような情報が含まれています:
- ページのタイトル:
<title>Example Domains</title>
というタグで囲まれた部分。この部分がブラウザのタブや検索結果で表示されるタイトルになります。
- 見出しや段落:
<h1>
タグや<p>
タグで囲まれたテキスト部分。例えば、「Example Domains」という見出しや、ドメイン名の説明文など。
- リンク:
<a>
タグで定義されるリンク。このページ内に他のページへのリンクが含まれていれば、それも取得されています。
- メタデータ:
- ページの
<head>
セクションに含まれるメタタグ(<meta>
タグ)など。これは、ページの説明やキーワード、文字コードなどの情報を含んでいます。
- ページの
- スタイルやスクリプト:
- ページの外観を制御するためのCSSや、動的な動作を制御するためのJavaScriptも含まれます。
例としてのHTMLの一部
1 2 3 4 5 6 7 8 9 10 11 12 |
<!DOCTYPE html> <html> <head> <title>Example Domains</title> <meta charset="UTF-8"> </head> <body> <h1>Example Domains</h1> <p>As described in ...</p> <a href="https://www.iana.org">More Information</a> </body> </html> |
取得データの使用例
- タイトルの取得:
soup.title.string
を使ってページのタイトル「Example Domains」を抽出できます。 - リンクの抽出:
soup.find_all('a')
を使ってページ内のリンク(例:href="https://www.iana.org"
)を抽出できます。 - 本文のテキストの解析:
soup.find_all('p')
で段落のテキストを抽出し、ページの説明文を取得できます。
今回はここまでとなります!!
まとめ
今回はここまでの内容となります。
スクレイピングを使って、データの収集を行うことで分析やデータベースを作成することができます。
正直、現段階では私もスクレイピングの効果をそこまで理解できていませんが、HTML情報を取得しその中から自分の必要な情報だけを習得することができるようなっていきたいですね😊
もしわからないことがあれば、このブログやXに質問等を投げていただければと思います。また、コミュニティもやっっているのでそちらから質問を投げていただいても大丈夫ですよ!!
Xのアカウントはこちら
Discordコミュニティ
プログラミングを視覚的に理解したい方やプログラミングで絵を書いてみたい方はUdemyで講座も作っているのでこちらも参考にしてみてください
Udemy講座
ChatGPTでPythonの学習を始めてみたい方は以下の記事を参考にしてみてください
関連記事
ChatGPTはプログラミングの学習はできても、人のつながりまでは作ってくれません。
プログラミングの学習だけではなく、人との繋がりを作ってくれるスクールもオススメです。
気になる方は無料相談からでも体験してみてください!!
次回の記事はこちらから
関連記事