CodeGym /コース /Python SELF JA /BeautifulSoupを使ったHTMLパース

BeautifulSoupを使ったHTMLパース

Python SELF JA
レベル 31 , レッスン 2
使用可能

1. HTMLドキュメントのダウンロードとパース

機能の簡単な概要

requestsライブラリは、ウェブページのHTMLコードを取得するための「使者」のようなものだよ。 HTTPリクエストを作成して、ページを届けてくれるんだ。まるでピザの 配達員みたいだけど、もちろん「マルゲリータ」や箱はないけどね。

一方でBeautifulSoupは「シェフ」みたいな感じだね。 取得したHTMLをパーツ(タグ、属性、テキスト)に分解して、 必要な要素を探し出してくれる。必要な情報を見つけて保存するのを 助けてくれる便利なライブラリだよ。

requestsライブラリの使い方

さあ、いよいよ最初のHTTPリクエストを作成してHTMLコードを取得してみよう。 実践としてexample.comをロードしてみるんだ。このサイトはインターネットの 古代ページみたいなもので、最初の練習にはぴったりだよ。

Python

import requests

url = 'http://example.com'
response = requests.get(url)

# 全てが順調か確認しよう
if response.status_code == 200:
    print("ページの読み込みに成功しました!")
else:
    print("何かが間違っています。エラーコード:", response.status_code)

このプログラムは、指定したURLにリクエストを送り、成功かエラーかを 出力するよ。もし成功なら、HTMLコードがテキストとして手に入るんだ。

エラーコードの追跡

スクレイピングを自動化すると、頻繁に「ロードされるべきページ」が 正常にロードされない状況に遭遇すると思う。だからエラーコードの分析は、 数ページ以上をパースするプロジェクトでは必須の部分だよ。

サイトのオーナーたちは、データをパースされることにあまり良い感情を 持っていないんだ。一つには、負荷が増えること(特に何千ページも同時に パースされた場合)。もう一つには、それが彼らにとっての収益源だからだね。 CAPCHAやCloudFlareなど、スクレイピング対策の方法はたくさんあるよ。

ビジネスにとって理想的なのは、自分が競合他社のデータをパースできて、 誰も自分のデータをパースできない状況を作り出すことさ。まさに冷戦みたいだね。

BeautifulSoupを使ったHTMLパース

HTMLコードを取得したら、BeautifulSoupを使って内容を 調べることができるよ。本を開いて内容を読むみたいにね:

Python

from bs4 import BeautifulSoup

# HTMLコードの内容をBeautifulSoupに渡す
soup = BeautifulSoup(response.text, 'html.parser')

# 中身をチェックしよう
print(soup.prettify())

prettify()メソッドはHTMLコードをきれいにフォーマットして、 内容を確認できるようにしてくれる。次回の講義では、このHTMLを 詳しく調べていくよ。まるで砂場で遊ぶ子供みたいにね。 疲れて、土だらけだけど、満足して家に帰る感じだよ :)

3. 実践:HTMLのダウンロードと解析

理解を深めるために、実践演習をやってみよう。example.comから タイトルと説明文を引き出すことを試してみるんだ。 これにはHTMLの知識と、BeautifulSoupの新しい知識を使うよ。

データの抽出

Python

# ページのタイトルを抽出
title = soup.title.string
print("ページのタイトル:", title)

# メインヘッディング(h1)を抽出
main_heading = soup.h1.string
print("メインヘッディング:", main_heading)

# 段落のテキスト内容を抽出
paragraph = soup.find('p').text
print("最初の段落:", paragraph)

この例では、title, h1, find()メソッドを使って、ページから必要な情報を 抜き出しているよ。私たちはサイバーディテクティブになって、 事件現場の証拠を調査している感じだよ!

4. よくあるエラー

ウェブスクレイピングをする中で、典型的なエラーに出会うこともあるよ。 例えば、HTTPリクエストの処理ミス、データ抽出の間違い、 またはHTMLパースのエラーが含まれる。耐性のあるしっかりしたスクリプトの 開発には、忍耐と練習が必要だね。例えば、リクエストが 成功したことを確認するために、ステータスコード (response.status_code)を必ずチェックしよう。 HTML構造を考慮しないでfind()find_all()メソッドを使うと、エラーの原因になりかねない。 パースを始める前には、必ずHTMLを分析しよう。

ウェブスクレイピングは、データ収集や商品の価格監視の自動化など、 実用的な応用がたくさんあるよ。これらの知識は、例えば 面接時のプロジェクトコードの例として役立つかもしれない。 実際の現場では、例えばマーケターが競合他社の価格を 監視するためにスクレイピングを使ったり、開発者が 外部サイトとの統合に使ったりする例があるよ。

ニュースアグリゲーターや分析システムのために 情報を処理する際にも、ウェブスクレイピングの知識が役立つよ。 色々なソースからデータを集めるスクリプトを作成することで、 ルーチン作業を自動化することができるんだ。さらに私たちの バーチャルアプリケーションを発展させて、 本物のウェブマスターになろう!

1
タスク
Python SELF JA, レベル 31, レッスン 2
ロック未解除
HTMLドキュメントのダウンロードと解析
HTMLドキュメントのダウンロードと解析
2
タスク
Python SELF JA, レベル 31, レッスン 2
ロック未解除
HTML要素の抽出
HTML要素の抽出
3
タスク
Python SELF JA, レベル 31, レッスン 2
ロック未解除
HTMLを解析して複数の要素を抽出する
HTMLを解析して複数の要素を抽出する
4
タスク
Python SELF JA, レベル 31, レッスン 2
ロック未解除
より複雑なページのパース
より複雑なページのパース
コメント
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION