スクレイピング(クローリング)のやり方 for python
Pythonにおけるスクレイピング(クローリング)のやり方について説明していく
スクレイピング(クローリング)とは特定のサイトのhtmlを取得し、
そこからデータを抽出することである。
スクレピングを行うことで、必要としているデータの取集ができるため
他サイトのデータ分析を行えたり、新たなサービスに利用することができる。
スクレイピングを行なったことがない人には、少しハードルが高く感じしてしまうが、
Pythonなどの言語にはスクレイピングに便利なライブラリが多数存在しているため、
難易度はそこまで高くない。
よって以降に簡単なスクレイピングプログラムを作成し、説明していく。
まず、言語選び。
スクレイピングを行うのはおそらくどの言語でもやり方さえ工夫すればできる。
言語の中でスクレイピングに適している・よく利用されるものとしてはスクリプト言語である。
よってPythonやPHPなどにライブラリが便利なライブラリができているのだ。
よって今回はPythonを用いて行うやり方で説明する。
やり方といっても単純なので簡単にソースコードを見ながら説明していく。
# coding: UTF-8 import urllib.request, urllib.error from bs4 import BeautifulSoup # アクセスするURL url = "http://www.sej.co.jp/i/products/thisweek/kyushu/" # URLにアクセスし、htmlを取得 html = urllib.request.urlopen(url=url) # htmlをBeautifulSoupで操作 soup = BeautifulSoup(html, "html.parser") # 商品リスト取得 itemList = soup.find('ul', class_='itemList') # 商品リストから名前リストを取得 itemNameList = itemList.find_all('div', class_='itemName') resList = [] for itemName in itemNameList: # 名前リストを配列に格納していく。 resList.append(itemName.string) # 出力 print(resList)
上記、セブンイレブンのサイトから新商品の商品名を抜き取ってくるプログラムである。
流れとしては
1. 指定した URLにアクセス
2. URLからhtml情報を取得
3. htmlの中からライブラリ(BeautifulSoup)を用いて、指定したタグの情報を抜き取る
4. 出力
上記が大きな分類である。
soup.find
この命令でライブラリ(BeautifulSoup)を用いてタグからデータを取得できる。
そして取得したデータは
itemList.find_all('div', class_='itemName')
さらにfindで詳細なデータを取ることができるのだ。(allがつくと複数取得)
とても短いが、説明としては以上である。
それくらい単純に、簡単に作ることができるのである。
なので、これを機に皆さんもスクレイピングしてみてはどうだろう。