Python

【Python】童謡の曲一覧を取得してみよう! – スクレイピングの方法と注意点

みなさん、こんにちは、どんぶラッコです。

本日は、スクレイピングについて学んでいきましょう!

そもそもスクレイピングとは何か?

scrapeの意味をロングマン英英辞書で引いてみると

to remove something from a surface using the edge of a knife, a stick etc

https://www.ldoceonline.com/jp/dictionary/scrape

となっています。

つまり、Webサイトから必要な情報を削ぎ取って取得する、みたいなニュアンスです。

では、早速その方法について見ていきましょう!

今回は、BeautifulSoupというライブラリを使って記述をしていきます。

童謡のタイトル一覧を取得しよう!

今回は、こちらのサイトを使わせていただきます。

https://www.uta-net.com/artist/4002/

こちらのサイトでは、童謡・唱歌の一覧を掲載しています。

ということで、サンプルコードです!

from bs4 import BeautifulSoup
import urllib.request as req

# URLを指定
url = 'https://www.uta-net.com/artist/4002/'

# URLのレスポンスを格納する
res = req.urlopen(url)

# 取得したレスポンスを元にBeautifulSoupインスタンスの生成
soup = BeautifulSoup(res, 'html.parser')

# 取得したい要素のセレクタを指定
_songs = soup.select('.side > a')

# Noneの要素を取り除き、曲名を配列化
songs = [_song.string for _song in _songs if _song.string != None]

すると、songsには

このように曲名が入力されていることが確認できますね!

むやみにスクレイピングしない!

ここからは注意点です。

便利なスクレイピングですが、無闇に使わないようにしましょう。

もし間違えてfor文やwhile文の中に記述をしてしまった場合、リクエストの回数分相手のサーバに迷惑をかけることになります。

また、サイトによってはサイトポリシーとしてスクレイピングを禁止しているサイトもあります。

各サイトのポリシーを読み、その基準に乗っ取る形でスクレイピングをしましょう。


とはいえ、サイトの情報を抽出できるというのは非常に便利です。習得したいテクニックの一つですね♪

ABOUT ME
どんぶラッコ
ECコンサルタント、システムエンジニアを経て、quintet株式会社CTOに就任。普段はNuxt.jsやLaravelを使用しています。

\面白いと思ったら/

記事のシェア & Twitter のフォロー をお願いします!

@proglearn
RELATED POST