Pythonでスクレイピングしてニフティクラウドに格納


ymlファイルの作成

まずは、NiftyCloudのAPIキーをコピペして、ymlファイルを作成します。

nifty_cloud.yml
APPLICATION_KEY: 'your_application_key'
CLIENT_KEY: 'your_client_key'

ChromDriverをダウンロード

次に、ここからChromDriverをインストールします。

今回スクレイピングするサイト

https://www.walkerplus.com/event_list/eg0135/
お祭りの情報をスクレイピングして、その情報をニフティクラウドに格納したいと思います。

Pythonで走ろう!

上の2つのファイルはこれから走らせるコードと同じ作業ディレクトリに置きます。

code.py
from py_nifty_cloud.nifty_cloud_request import NiftyCloudRequest
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from time import sleep
code.py
driver_path = "/Users/********/chromedriver"
driver = webdriver.Chrome(driver_path)
driver.get("https://www.walkerplus.com/event_list/eg0135/")
sleep(10)

お祭りの日付をスクレイピングします。

サイトの中で、日付はここにありますね!
クラスの名前で指定して、日付の値を取得します。

code.py
dates = driver.find_elements_by_class_name("m-mainlist-item-event__period")
date_list = []
for i in range(len(dates)):
    date = dates[i].text
    date_list.append(date)
print(date_list)

結果がこちら。

['2019年9月27日(金)・28日(土)', '終了間近 2019年9月15日(日)', '2019年9月14日(土)~20日(金)', '2019年9月21日(土)~25日(水)', '終了間近 2019年9月14日(土)・15日(日)', '終了間近 2019年9月7日(土)・8日(日)', '終了間近 2019年9月14日(土)・15日(日)', '終了間近 2019年9月13日(金)', '2019年9月21日(土)・22日(日)', '終了間近 2019年9月7日(土)~9日(月)']

次は、お祭りの場所をスクレイピングします。同じようにクラスの名前を指定して、値を取得します。

code.py
places = driver.find_elements_by_class_name("m-mainlist-item-event__place")
place_list = []
for i in range(len(places)):
    place = places[i].text
    place_list.append(place)
print(place_list)
['武蔵総社 大國魂神社', '石清水八幡宮', '柞原八幡宮', '大原八幡宮', '山陽電車高砂駅南側一帯', '北澤八幡神社', '武蔵野八幡宮', '住吉大社', 'JR恵那駅前周辺', '山梨県上野原市上野原']

お祭りのタイトルもスクレイピングしちゃいます。

code.py
titles = driver.find_elements_by_class_name("m-mainlist-item__ttl")
title_list = []
for i in range(len(titles)):
    title = titles[i].text
    title_list.append(title)
print(title_list)
['大國魂神社くり祭', '勅祭 石清水祭', '柞原八幡宮 仲秋祭・浜の市', '大原八幡宮 放生会', 'たかさご万灯祭2019', '北澤八幡神社例大祭', '第47回 吉祥寺秋祭り', '住吉大社 観月祭', '2019 ENAみのじのみのり祭', '牛倉神社例大祭']

ニフクラのデータストアに格納

code.py
ncr = NiftyCloudRequest('./nifty_cloud.yml') #application keyとclient keyを書いた、ymlファイルを作成しておく。
path = '/classes/Festival'
method = 'POST'

#格納
for i in range(len(date_list)):
    values = {'date': date_list[i],'place': place_list[i],'title': title_list[i]}

    response = ncr.post(path=path, query=values)
print(response.status_code)
201

ニフクラのデータストアを確認

お祭りの情報が格納できています!!