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)
例えば、このコードでは
ここのタイトルリストを表示されている分を取得しています。
- 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入門