パチスロのデータをCSVでまとめる

f:id:tamurasann:20190501221323j:plain

Pythonを使って台データオンラインからデータを抽出してCSVにまとめてみました。

 

コード全体像

 

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

# URLの指定
data_get = input("日付ex04-29みたいな取得したい日付を入力してください:")
html = urlopen("https://daidata.goraggio.com/100216/ranking?mt=1&ps=S&gb=good&day=2019-" + data_get + "&week=&month=&ballPrice")
bsObj = BeautifulSoup(html, "html.parser")

# テーブルを指定
table = bsObj.findAll("table", {"class":"tablesorter"})[0]
rows = table.findAll("tr")

#CSVファイルへ書き込み
with open("D:/パチスロ/" + data_get + ".csv", "w", newline ="", encoding='utf-8_sig') as file:
writer = csv.writer(file)
for row in rows:
csvRow = []
for cell in row.findAll(['td', 'th']):
csvRow.append(cell.get_text())
writer.writerow(csvRow)

f:id:tamurasann:20190501230256p:plain

※テキストで別ファイルにコピーしたら上記のような形になります。サイトの都合上、4位から10位の順位が出ないです。

日付を入力してその日付のデータをCSVでまとめるようなコードとなります。

その他解説

ssl._create_default_https_context = ssl._create_unverified_context

#SSL証明書が正しくないサイトであってもアクセスができるようにします。

 

data_get = input("日付ex04-29みたいな取得したい日付を入力してください:")
html = urlopen("https://daidata.goraggio.com/100216/ranking?mt=1&ps=S&gb=good&day=2019-" + data_get + "&week=&month=&ballPrice")

#data_getという変数に入力を受け付けた後に返された文字を代入しています。そして、urlopenで台データオンラインの指定店舗の絶好調スロットURLの中にある日付欄をdata_getに変更という形で指定しています。

https://daidata.goraggio.com/100216/ranking?mt=1&ps=S&gb=good&day=2019-05-01&week=&month=&ballPrice=

f:id:tamurasann:20190501222641p:plain

 

bsObj = BeautifulSoup(html, "html.parser")

#html変数に入れた先ほどのURL内のhtmlをBeautifulSoupを使って整理し、bsObj変数に代入しています。

 

table = bsObj.findAll("table", {"class":"tablesorter"})[0]

#bsObjという変数にBeautifulSoupで指定したURL内のhtmlを分析し、tableタグのclass tablesorterの文字をtable変数に代入しています。

f:id:tamurasann:20190501223828p:plain

 

以下のような形で出力されています。

f:id:tamurasann:20190501224548p:plain

f:id:tamurasann:20190501224522p:plain


with open("D:/パチスロ/" + data_get + ".csv", "w", newline ="", encoding='utf-8_sig') as file:

#ローカルディスクDのパチスロフォルダへdata_getに入っている文字名、拡張子csvでファイル作成します。newline=""をつけないとwindowsでは空白の改行が自動的に作成されてしまいます。encoding='utf-8_sig'をつけないとエクセルで開いた時に文字化けします。

 

基本的にCSVへの書き込みは以下のコードとなります。

import csv

with open ("ファイル名.csv", "w", newline="", encoding="utf-8_sig)as file:

writer = csv.writer(file)

writer.writerow(CSVとして書き込みたいlist)

上記コードの注意点

・ブログにうまくコードを貼る方法がわからないのでインデントがおかしいです。(誰か簡単な方法を教えてください)

・日付を指定するのでその日付のデータしかとれません。

・店舗を指定するのでその店舗のデータしかとれません。

・台データオンラインは大幅に出玉が変動した台の情報しかないです。

終わりに

上記のコードをコピーしてURLやhtmlのタグやclassの指定を変更したりしたら、違うサイトでも同じような考えで流用できると思います。

f:id:tamurasann:20190501230728p:plain