今回は、find_all()でクラスを全部抜きます。

# 実装する機能

  • 弊サイトにアクセスしclass=language-pythonを取得する。

# 実装したコード

import requests
from bs4 import BeautifulSoup

target_url = "https://coderecipe.org/func/func_abs.html"
r = requests.get(target_url)
soup = BeautifulSoup(r.text)
classes=soup.find_all(class_="language-python")
for clas in classes:
  print(clas.text)

動くサンプル

# コード解説

# ライブラリを読み込む

import requests
from bs4 import BeautifulSoup

requestsは、PythonのHttp通信などを行うライブラリです。

BeautifulSoupは、Htmlを解析して必要な要素を取得するライブラリです。

先に書いておきますが、BeautifulSoupではJavascriptで書き出しをされるページは読み込めません。

# リクエストを受け取る

target_url = "https://coderecipe.org/func/func_abs.html"
r = requests.get(target_url)

ここでは、リクエストライブラリを使ってHttpリクエストを送り、サーバーから返ってきたデータを変数rに格納しています。

# Class language-python を取得する

soup = BeautifulSoup(r.text)
classes=soup.find_all(class_="language-python")
for clas in classes:
  print(clas.text)

r.textでリクエストのHtmlをパースします。 soup.find_all()で指定した全ての要素を取得します。つまり、複数です。 注意点は、classは、pythonの予約語で使えませんのでBS4ではclass_を代わりに使います。 前回は、print()で表示できましたが、今回はfor文などでループ処理を行い値を取り出さないといけません。