初心者向け!BeautifulSoupとRequestsの使い方

BeautifulSoupとRequestsの基本的な概念と用途

BeautifulSoupとRequestsは、PythonでWebスクレイピングをするためのライブラリです。BeautifulSoupはHTMLやXMLのパーサーライブラリで、WebページのHTMLを解析することができます。RequestsはHTTPライブラリで、WebページのHTMLを取得することができます。

PythonとBeautifulSoupとRequestsの関連性

Pythonは、プログラミング言語の1つで、Webスクレイピングをするためのライブラリが豊富に揃っています。BeautifulSoupとRequestsは、その中でもWebスクレイピングをするためによく使われるライブラリです。

BeautifulSoupとRequestsの環境設定方法

BeautifulSoupとRequestsを使うためには、まずPythonのインストールが必要です。Pythonをインストールしたら、以下のコマンドを実行して、BeautifulSoupとRequestsをインストールします。

pip install beautifulsoup4
pip install requests

Requestsを使ったWebページからのデータ取得方法

Requestsを使ってWebページからデータを取得するには、以下のようなコードを書きます。

import requests
url = 'https://example.com'
response = requests.get(url)
print(response.text)

このコードでは、requests.get()メソッドを使って指定したURLのWebページを取得し、response.textでHTMLを取得しています。

BeautifulSoupを使ったHTML解析の基本的な手順

BeautifulSoupを使ってHTMLを解析するには、以下のような手順を踏みます。

  1. BeautifulSoupオブジェクトを作成する
  2. HTMLを解析する
  3. 必要な情報を取得する

以下のコードは、BeautifulSoupを使ってHTMLを解析する例です。

from bs4 import BeautifulSoup
html = """
<html>
<head>
  <title>Example</title>
</head>
<body>
  <p>Hello, world!</p>
</body>
</html>
"""
soup = BeautifulSoup(html, 'html.parser')
print(soup.title.text)
print(soup.body.p.text)

このコードでは、BeautifulSoupオブジェクトを作成して、その中でHTMLを解析しています。title.textでタイトルタグのテキスト、body.p.textでbodyタグ内のpタグのテキストを取得しています。

BeautifulSoupとRequestsを組み合わせたスクレイピングの実例

以下のコードは、BeautifulSoupとRequestsを組み合わせてWebページから情報を取得する例です。

import requests
from bs4 import BeautifulSoup
url = 'https://www.example.com'
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
items = soup.find_all('div', class_='item')
for item in items:
  name = item.find('h2', class_='name').text
  price = item.find('span', class_='price').text
  print(name, price)

このコードでは、requests.get()メソッドでWebページを取得し、BeautifulSoupオブジェクトで解析しています。find_all()メソッドで、classがitemのdivタグを全て取得し、その中からh2タグとspanタグのテキストを取得しています。

まとめ

PythonのライブラリであるBeautifulSoupとRequestsを使えば、Webスクレイピングが簡単にできます。Requestsを使ってWebページを取得し、BeautifulSoupを使ってHTMLを解析することで、必要な情報を取得することができます。