1. HTMLドキュメントのダウンロードとパース
機能の簡単な概要
requestsライブラリは、ウェブページのHTMLコードを取得するための「使者」のようなものだよ。 HTTPリクエストを作成して、ページを届けてくれるんだ。まるでピザの 配達員みたいだけど、もちろん「マルゲリータ」や箱はないけどね。
一方でBeautifulSoupは「シェフ」みたいな感じだね。 取得したHTMLをパーツ(タグ、属性、テキスト)に分解して、 必要な要素を探し出してくれる。必要な情報を見つけて保存するのを 助けてくれる便利なライブラリだよ。
requestsライブラリの使い方
さあ、いよいよ最初のHTTPリクエストを作成してHTMLコードを取得してみよう。 実践としてexample.comをロードしてみるんだ。このサイトはインターネットの 古代ページみたいなもので、最初の練習にはぴったりだよ。
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を使って内容を 調べることができるよ。本を開いて内容を読むみたいにね:
from bs4 import BeautifulSoup
# HTMLコードの内容をBeautifulSoupに渡す
soup = BeautifulSoup(response.text, 'html.parser')
# 中身をチェックしよう
print(soup.prettify())
prettify()メソッドはHTMLコードをきれいにフォーマットして、 内容を確認できるようにしてくれる。次回の講義では、このHTMLを 詳しく調べていくよ。まるで砂場で遊ぶ子供みたいにね。 疲れて、土だらけだけど、満足して家に帰る感じだよ :)
3. 実践:HTMLのダウンロードと解析
理解を深めるために、実践演習をやってみよう。example.comから タイトルと説明文を引き出すことを試してみるんだ。 これにはHTMLの知識と、BeautifulSoupの新しい知識を使うよ。
データの抽出
# ページのタイトルを抽出
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を分析しよう。
ウェブスクレイピングは、データ収集や商品の価格監視の自動化など、 実用的な応用がたくさんあるよ。これらの知識は、例えば 面接時のプロジェクトコードの例として役立つかもしれない。 実際の現場では、例えばマーケターが競合他社の価格を 監視するためにスクレイピングを使ったり、開発者が 外部サイトとの統合に使ったりする例があるよ。
ニュースアグリゲーターや分析システムのために 情報を処理する際にも、ウェブスクレイピングの知識が役立つよ。 色々なソースからデータを集めるスクリプトを作成することで、 ルーチン作業を自動化することができるんだ。さらに私たちの バーチャルアプリケーションを発展させて、 本物のウェブマスターになろう!
GO TO FULL VERSION