Seleniumを使ったスクレイピング
えー以前からUdemyと呼ばれるオンライン学習プログラムで勉強する為に色々と教材を買っていましたが、買ってそのままというのが常態化してきたので最近消化し始めました今日この頃です。
なので今回はUdemyで学習したことを書こうと思います!
Seleniumを使ってスクレイピングします!
と言うことで、タイトル通りスクレイピングします。
しかも今回はJupyter Notebookを使ってみました!
以前にJupyter Notebookをインストールしてそのまま放置してたやつですね。。。
ではでは早速Jupyter Notebookを起動してみます。
Jupyter Notebookの起動
以下のコマンドで起動してみる。
$ jupyter notebook
するとブラウザが立ち上がり以下の様な画面が表示される。
これで起動は完了。
Jupyter Notebookのワークディレクトリの作成
デフォルトで”Untitled Folder”ってフォルダ名がありますが、今回は別途作業フォルダを作成します。
作成方法はとても簡単で下記図の通り、左端の”NEW”と言うタブから”Folder”をクリックする事で新規でフォルダを作成できます。
作成するとこんな感じ↓
”Untitled Folder 1”ってのが新しくできると思います。
フォルダの名前を変更したければ、ゴミ箱マークの横に”Rename”ってあるのでそこから変更できます。
Seleniumを使ったスクレイピング
作業フォルダも出来たので次に実際にPythonのコマンドを書いていく作業ファイルを準備します。
作業フォルダを作成した方法と同様に”New”→”Python [Root]”をクリックします。
すると新しくブラウザタブが追加されます。基本的にはこの新しく追加されたページで作業を行います。
今回は練習みたいなものなので比較的スクレイピングがやり易いページから情報を取得したいと思います。
よくあるランキングサイトからのスクレイピングをやってみたいと思います。
ランキングサイトからの情報を取得する
今回はスクレイピングさせて頂くWebサイトはこちら
[ランキング] 頂上決戦!一番うまいインスタント袋麺ランキング1位から10位|サッポロ一番,うまかっちゃん,チキンラーメン|他 - gooランキング
インスタントラーメンのランキングサイトから以下の3つの情報を取得してみます。
- 順位
- 商品名
- 投票数
まずは、Seleniumをインポートします。ちなみにこれを動作させるとGoogle Chromeが起動します。
from selenium import webdriver browser=webdriver.Chrome() browser.get('https://ranking.goo.ne.jp/column/5524/ranking/51628/')
次に、順位のみを取得します。
all_rank = [] elem_rank = browser.find_elements_by_class_name('ranking-number') for rank in elem_rank: elem_rank = rank.text all_rank.append(elem_rank) all_rank
そして、商品名の取得。
all_name = [] elem_name = browser.find_elements_by_class_name('hdg') for name in elem_name: elem_name = name.text all_name.append(elem_name) all_name
最後に投票数の取得。
points = browser.find_elements_by_class_name('article-meta') all_point = [] for _point in points: point = _point.text all_point.append(point) all_point
これで3つの情報を取得できました。
ただ取得した情報がバラバラだと味気ないのでこの情報を合体させたいと思います。
最後に取得した情報をCSVに纏めて保存
それぞれ取得した情報をPandasを使って綺麗に整理して保存してみます。
import pandas as pd df = pd.DataFrame() df['ランキング'] = all_rank df['商品名'] = all_name df['投票数'] = all_point df
以上でSeleniumを使ったスクレイピング終了です!
思ってたより上手にスクレイピング出来たんじゃないかと思います。
実はスクレイピングで取得してみたい情報があるので完成した際にはここでお披露目出来ればと思っています。
またUdemyも素晴らしいWeb教材です。
たまに90%OFFセールをやっているのでその時はお買い得ですので、興味のある方は是非やってみてください。