第二弾:パチスロのデータをCSVでまとめる(続)

f:id:tamurasann:20190817110705j:plain

好評だった過去記事の『パチスロのデータをCSVでまとめる』プログラムを改訂してみました。

 

過去記事は以下となります。この時は日付を指定してその日付のデータをCSVでまとめるようなものだったのですが、それを少し改良し、現在の日付から収集したい日数を指定して、その日数分のデータを取ってくるような形にしてみました。

 

www.netachoo.work

 

コード全体


import csv
from urllib.request import urlopen
from bs4 import BeautifulSoup
import ssl
import datetime
ssl._create_default_https_context = ssl._create_unverified_context

data_day =  input("収集したい日数を入力してください:")
store_no = input("店舗番号を入力してください:")
for i in range(int(data_day)):
    today = datetime.date.today()
    day = today - datetime.timedelta(days=i+1)
    url = "https://daidata.goraggio.com/" + store_no +"/ranking?mt=1&ps=S&gb=good&day=" + str(day) + "&week=&month=&ballPrice="
    html = urlopen(url)
    bsObj = BeautifulSoup(html, "html.parser")
    table = bsObj.findAll("table", {"class":"tablesorter"})[0]
    rows = table.findAll("tr")
    for row in rows:
        csvRow = []
        for cell in row.findAll(['td', 'th']):
            csvRow.append(cell.get_text())
        with open("D:/パチスロ/" + "data" + ".csv", "a", newline ="", encoding='utf-8_sig') as f:
            writer = csv.writer(f, lineterminator='\n') 
            writer.writerow(csvRow)

 

f:id:tamurasann:20190817112559p:plain

f:id:tamurasann:20190817110401p:plain

※順位の箇所に無駄な物が入ってしまうのでB列削除していただければ良い感じになります。

下記はB列を削除後のCSV

f:id:tamurasann:20190817110524p:plain

 

実際のデータ(CSVをエクセルにしております)

drive.google.com

 

処理の流れ

 

①:収集したい日数と収集したい店舗番号をinputで入力させ、その日数分をfor文で処理を繰り返す

f:id:tamurasann:20190817112235p:plain

data_day = input("収集したい日数を入力してください:")
store_no = input("店舗番号を入力してください:")
for i in range(int(data_day)):

 

②:datetimeで今日の日付をとり、day変数に今日の日付から一日目前のデータを取る

(繰り返し回数に応じて変更するようにしておく)

today = datetime.date.today()
day = today - datetime.timedelta(days=i+1)

 

③:台データオンラインで一番はじめに指定した店舗番号の絶好調スロットデータへアクセスし、必要な情報を収集する。

url = "https://daidata.goraggio.com/" + store_no +"/ranking?mt=1&ps=S&gb=good&day=" + str(day) + "&week=&month=&ballPrice="
html = urlopen(url)
bsObj = BeautifulSoup(html, "html.parser")
table = bsObj.findAll("table", {"class":"tablesorter"})[0]
rows = table.findAll("tr")

 

④:リストへの格納とCSVファイルへの書き込み

for row in rows:
csvRow = []
for cell in row.findAll(['td', 'th']):
csvRow.append(cell.get_text())
with open("D:/パチスロ/" + "data" + ".csv", "a", newline ="", encoding='utf-8_sig') as f:
writer = csv.writer(f, lineterminator='\n') 
writer.writerow(csvRow)

 

終わりに

データを見てみるとその店舗が力を入れてる日や熱い機種等がわかるかもしれません。ぜひご活用ください。

自分で出すのがメンドクサイ人は連絡いただければご相談に乗らせていただきます。

 

過去記事もよろしければご参照ください。

www.netachoo.work