UdemyでPythonを勉強した結果を残すブログ。

40歳でプログラミング始めて転職までいけるのかを実録してみます。

DAY45 Beautiful Soupを使ってスクレイピングをする

Beautiful Soupを使ってスクレイピングをする

目次

概要

今回はrequestsとBeautiful Soupというプラグインをインポートしてウェブサイトのデータを取得するスクレイピングの簡単な部分を勉強します。

簡単に言えばpythonでサイトのソースを保存して、欲しいところだけクリッピングができるということ。

例えばそのサイトのリンク先だけ保存するとか、画像リンクだけを取得するとか。

それでは始めます。今回は結構簡単ですが、HTMLをある程度理解していることが前提です。

requestsとBeautiful Soupをインストールして呼び出す

1ページのみなら、使い方は一度さらえばとても簡単。

import requests
from bs4 import BeautifulSoup

re = requests.get("https://news.yahoo.co.jp/topics/business")
page = re.text

soup = BeautifulSoup(page, "html.parser")

titles = soup.find_all("div", {"class":"newsFeed_item_title"})

for title in titles:
    print(title.text)

例えば、このコードでは

経済トピックス一覧 - Yahoo!ニュース

ここのタイトルリストを表示されている分を取得しています。

  • requests.getにurlを入れてソースを取得
  • re.textにすることでオブジェクトからテキストに変換
  • soupという変数でBeautiful Soupを呼び出し、pageの変数をhtml.parserという機能で解析する
  • 解析したhtmlからfind_allという機能でhtmlソースのnewsFeed_item_titleというクラスを持つdivを全部抽出し、titlesという配列で保存
  • titlesの配列から1つずつprintでコンソールに出力

という流れです。

基本的にはこれがテンプレな感じでスクレイピングができますが、 普通は複数のページとかやりたいのでその辺はまた後日勉強していきたいと思います。

よりわかりやすいサイトはこちらとか

図解!Python BeautifulSoupの使い方を徹底解説!(select、find、find_all、インストール、スクレイピングなど) - AI-interのPython3入門