Python勉強中のtsenです。
今回はPythonを使ってWebスクレイピングを実施する方法について解説していきます。
Webスクレイピングとはウェブサイトから必要な情報を取得する技術のことです。
WebスクレイピングはExcelVBAでも実装出来ますし、
多くのプログラミング言語でも同様のことは実現できるのですが、
今回はPythonを使ったWebスクレイピングで楽天市場の商品を抽出する方法解説します。
Webスクレイピングとは?
Webスクレイピングとはウェブサイトから必要な情報を取得する技術のことです。
主にウェブ上の情報を収集する際に利用します。
主に他サイトから自分が必要としている情報だけを抽出してデータベースを作成していくようなときに利用します。
今回紹介するのはRequestsというライブラリを使ってWebページを取得し、
Beautiful Soupを使ってHTMLを抽出するという方法になります。
いきなり難しそうな単語が出てきましたね。
RequestsやBeautiful Soupというのは、ライブラリと呼ばれる、
プログラムがパッケージ化されたものを指します。
つまりRequestsというのを使うとWebページを取得するというプログラムが実行できるという訳です。
では、実際のコードを見ながら解説していきます。
Pythonコード
import requests
from bs4 import BeautifulSoup
url="https://search.rakuten.co.jp/search/mall/雛人形/"
html=requests.get(url)
soup=BeautifulSoup(html.text,'html.parser')
items=soup.select('.searchresultitem')
n=1
for item in items:
title=item.select_one('.title').text.replace('\n','')
price=item.select_one('.price').text.replace('\n','').replace(' ','')
print('商品名:{} 価格:{}'.format(title,price))
print('-'*30)
n+=1
こちらが、実際のコードです。
簡単に解説をしておきます。
最初の2行は、
Requests(Webページの情報を取得できる)を使うよ!
bs4(取得したURL内のHTML要素を操作できる)というに含まれる「BeautifulSoup」という部品のみ使うよ!
というように、使用するライブラリの宣言をしています。
次の段落では、
urlはこのページを指定するよ!
Requestsを使ってWebページ情報を取得するよ!
BeautifulSoupを使って解析するよ!
解析した情報を元に商品名をitemという事にするよ!
という事を意味しています。
楽天市場は検索したいキーワードをURLの語尾につけるとその検索結果を取得することができる仕組みになっているので、今回は、「雛人形」という検索ワードで検索をした際に表示される情報を抽出していきます。
そして最後のブロックでは、
取得したitemの情報の商品名と価格を順番に書き出していく処理をしています。
このコードを実行すると、以下のような結果が出力されいます。
商品名:PR 【Disney】ディズニー Disney | KIDEA お雛様 限定セット ◇ 雛祭り ひな祭り 節句 桃の節句 初節句 女の子 ひな人形 雛人形 お雛様 ミッキー ミニー コンパクト マンション 玄関 リビング インテリア おしゃれ ミニーの日 ◇ 価格:16,500円送料無料
------------------------------
商品名:PR 【Disney】 ディズニー コンパクトなぬいぐるみお雛さま「ミッキー&ミニー」 ◇ ベルメゾン 節句 雛祭り 桃の節句 端午の節句 男の子 女の子 初節句 出産祝い ギフト プレゼント お雛様 コンパクト おしゃれ ◇ 価格:4,290円送料無料
------------------------------
商品名:PR ひな人形 雛人形 コンパクト ケース飾り アクリルケース飾り ひなまつり オルゴール プレゼント 価格:29,990円送料無料
------------------------------
商品名:雛人形 ひな人形 おしゃれ かわいい おひなさま お雛様 コンパクト 雛 ケース飾り 親王飾り おしゃれ かわいい 名前旗付 【2021年度新作】【選べる24種類】 価格:29,800円送料無料
------------------------------
商品名:雛人形 ひな人形 雛 ケース飾り おしゃれ かわいい 木目込み おひなさま コンパクト 丸型 木製 名前旗付 Premoの雛人形 【2021年度新作】 価格:39,800円送料無料
------------------------------
商品名:雛人形 コンパクト ケース飾り 平安義正作 小三五親王 黒塗 パノラマケース 春爛漫 桜満開シリーズ 【2021年新作】【選べる5種類】 h293-sm-29-3-2-6 雛 人形 ケース飾り コンパクト 親王飾り ケース かわいい ひな人形 小さい お雛様 おしゃれ インテリア こどもの日 価格:63,550円送料無料
------------------------------
商品名:雛人形 コンパクト ケース飾り 本焼桐 アクリルケース オルゴール付 h303-sg-7-23 雛 人形 ケース飾り コンパクト 親王飾り ケース かわいい ひな人形 小さい お雛様 おしゃれ インテリア こどもの日 価格:39,990円送料無料
------------------------------
このように、指定したURLのWebページを解析し、必要な情報だけ書き出すことが出来ます。
Webスクレイピングを実行する際の注意点
Webスクレイピングはデータ収集を行う上でとても強力な手段ですが、
注意しなければならない点がいくつかあります。
まず、データ取得先のサーバーへの過度な負荷をかけないことです。
Webスクレイピングはプログラムが自動で実行するという性質上、
人間には不可能な大量のリクエストをデータの取得先に送信することができてしまいます。
しかし、短時間に大量のリクエストを送信することは、
取得先のサーバーの処理を遅延させ、
場合によってはサーバーをダウンさせるなどの損失を与えてしまいます。
そして、二つ目は、利用規約を守ることです。
Webサイトによっては、明確にスクレイピングすることを禁止しているものも存在します。
利用規約に「スクレイピング禁止」と謳われているにもかかわらず、
スクレイピングを行ってしまうと、利用規約違反となり、
場合によっては、民事上の損害賠償を請求される可能性があります。
そして、最後に著作権法を守ることです。
Webスクレイピングの対象となる情報に著作権が生じている場合、
活用方法を誤ると著作権法違反となりますので注意が必要です。
他社などのウェブサイトから情報を取得しますのでスクレイピングにより
情報をコピー・サーバ保存するためには、
原則として、著作権者である他社の同意を得る必要があり、
同意がない場合には原則として著作権違法という事になります。
そのため、どのような利用目的でスクレイピングを行うかということをきちんと確認おく必要があります。
著作権法は、あくまで「情報解析」を目的としている場合に限っては、著作権者の同意を受ける必要はないという事になっています。
まとめ
今回は、PythonのWebスクレイピングで楽天市場の商品を抽出する方法について解説しました。