Help us understand the problem. What is going on with this article?

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)

お祭りの日付をスクレイピングします。
スクリーンショット 2019-09-08 21.37.45.png

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

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

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

スクリーンショット 2019-09-08 21.35.18.png

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

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away