Webスクレイピングを行う際、HTMLから特定の情報を抽出することが必要になります。その際に便利なのが、PythonのライブラリであるBeautifulSoupです。
BeautifulSoupの導入とその特徴について
BeautifulSoupは、HTMLやXMLなどのマークアップ言語からデータを取得するためのPythonパッケージです。HTMLを解析し、構造化されたデータを取得することができます。BeautifulSoupは、HTMLの構造に依存しないため、柔軟なスクレイピングが可能です。
BeautifulSoupでHTMLを取得する方法
まずは、BeautifulSoupでHTMLを取得する方法について説明します。以下のコードを実行してみてください。
import requests from bs4 import BeautifulSoup url = "http://example.com" html = requests.get(url).content soup = BeautifulSoup(html, "html.parser") print(soup.prettify())
このコードでは、requestsモジュールを使ってhttp://example.comからHTMLを取得し、BeautifulSoupで解析します。そして、prettify()
メソッドを使うことで、解析結果を整形して出力します。
実行結果は以下のようになります。
<!DOCTYPE html> <html> <head> <title> Example Domain </title> ...
このように、BeautifulSoupはHTMLを解析し、構造化されたデータを取得することができます。
BeautifulSoupでHTMLの特定のクラスを取得する方法
次に、BeautifulSoupでHTMLの特定のクラスを取得する方法について説明します。以下のコードを実行してみてください。
import requests from bs4 import BeautifulSoup url = "http://example.com" html = requests.get(url).content soup = BeautifulSoup(html, "html.parser") class_name = "header" result = soup.find_all("div", class_=class_name) print(result)
このコードでは、find_all()
メソッドを使って、div
タグの中でclass="header"
となっているものを取得しています。
BeautifulSoupで取得したクラスからテキストを取得する方法
最後に、BeautifulSoupで取得したクラスからテキストを取得する方法について説明します。以下のコードを実行してみてください。
import requests from bs4 import BeautifulSoup url = "http://example.com" html = requests.get(url).content soup = BeautifulSoup(html, "html.parser") class_name = "header" result = soup.find_all("div", class_=class_name) text = result[0].text print(text)
BeautifulSoupの活用例とそのコード
以下は、BeautifulSoupを使った具体的な活用例です。
ニュースのトピックスを取得する
以下のコードを実行することで、ニュースのトピックスを取得することができます。
import requests from bs4 import BeautifulSoup url = "ニュースサイトのURL" html = requests.get(url).content soup = BeautifulSoup(html, "html.parser") class_name = "topics" result = soup.find_all("ul", class_=class_name) for li in result[0].find_all("li"): print(li.text)
実行結果は以下のようになります。
【速報】東京五輪、無観客開催を検討 政府・大会組織委、最終判断は今週中に 【速報】八王子市、緊急事態宣言発令へ 都内で初の市単独 【速報】ベトナム、新型コロナ感染者数急増 首都ハノイでロックダウン ...
BeautifulSoupを使う上での注意点
最後に、BeautifulSoupを使う上での注意点について説明します。
- BeautifulSoupはHTMLに依存しないため、HTMLの構造が変わるとスクレイピングができなくなる場合があります。
- スクレイピングは、サイトの利用規約に反する場合があるため、注意が必要です。
- スクレイピングによって取得したデータは、著作権やプライバシーの問題がある場合があります。そのため、利用する際には注意が必要です。
まとめ
以上、BeautifulSoupでHTMLのClassからTextをGetする方法について説明しました。BeautifulSoupを使うことで、柔軟なスクレイピングが可能になります。しかし、スクレイピングには注意が必要であることに注意して、利用するようにしましょう。