意識高い界隈、最も意識が低い男のブログ。

現社会人一年目。日々の出来事を連ねていくつもりです。見た人を楽しませるような記事を書いていきたいと思っております。仲良くしてください!!

【プログラミング】今日の運勢を正確に把握します【Python】

こんばんは、takasunです。

ずっと思っていたことを言います。


私たちは・・・何を信じればいいんでしょうか!?!?!?

※宗教的な話ではございません。


はい、改めましてこんにちは。takasunです。
ブログタイトルの通り、意識が低すぎて6月投稿ができませんでした。
7月は少し意識を高くして(意識高くなり過ぎないくらい)頑張っていこうと思います。
 


そして、話は戻りますが、私たちは何を信じればいいのか。

と言うのも、私にはこんな経験があります。

朝、ご飯を食べながら何気なくテレビを見ていると「星座占い」が始まります。
牡牛座は・・・1位!
おっ、今日はいいことがあるかもしれないな。
と、胸を躍らせるわけですよ。

そしてふとスマホをつけてYahooのトップページを見てみると・・・
牡牛座「56点」の文字。

・・・ファッ!?

私は・・・何を信じればいいんでしょうか!?!?!?

と、冒頭のリアクションに繋がるわけですね。
(宗教的な話ではありませんでした。)


そこで思ったのです。

ありとあらゆる、得点が表示される「星座占い」のホームページから、
平均点を算出することができれば、今日の運勢を正確に把握できるのではないだろうかと!

そうすればその平均点を見るだけで、一日のモチベーションを正確に保てます!
一喜一憂せずに済むのです!(一喜一憂したことあるっていう体で。)

実際、昼頃には順位とか点数なんて忘れてますけどね。

かと言って、毎日複数のホームページから平均点を計算するなんてダルいですよね。
そこでコレです。

退屈なことはPythonプログラミング言語)に任せよう。

みなさんはPythonをご存知ですか?プログラミング言語のひとつで現在注目を浴びています。

昨今耳にする人工知能(AI)にもよく使われている言語なんですよね~。


それはおいといて。
では問題のプログラムを作成してみました!

from urllib import request
from bs4 import BeautifulSoup

# 星座占い
url_yahoo = "https://fortune.yahoo.co.jp/12astro/taurus"
url_nifty = "https://uranai.nifty.com/f12seiza/oushi/"
url_excite= "https://fortune.woman.excite.co.jp/free/horoscopes/sign_ta/"
url_eonet = "https://eonet.jp/fortune/constellation/result.php?conste=taurus"
url_biglobe="https://uranai.biglobe.ne.jp/daily/ho02.html"

def return_point(url, selector):
    req = request.urlopen(url)
    bs = BeautifulSoup(req.read(), "html.parser")
    point = bs.select(selector)
    return point

points = []

# url_yahoo =============================
point = return_point(url_yahoo,
                     '#lnk01 > div > div > div > div > div > div:nth-of-type(1) > div > div > p')
points.append(point[0].string[:-1])
# url_nifty =============================
point = return_point(url_nifty,
                     '#re_main > div.left > table:nth-of-type(1) > tr > td:nth-of-type(3) > div')
points.append(point[0].string[:-1])
# url_excite ============================
point = return_point(url_excite,
                     '#horoscope > div > div.scoreinfo.clearfix > div > dl.status > dd:nth-of-type(1) > span')
points.append(point[0].string)
# url_eonet =============================
point = return_point(url_eonet,
                     '#top > div.l-wrapper.bg-error > main > div.result-unit > div.view-unit > div:nth-of-type(2) > div > div > dl > dd > span:nth-of-type(1)')
points.append(point[0].string)
# url_biglobe ===========================
point = return_point(url_biglobe,
                     '#seiza_main > div.wrap.clearfix > div.todayFortune.clearfix > div.total.whiteBox.clearfix > div.totalRight > p > span.pointNumber')
points.append(point[0].string)

detail = {"yahoo":points[0], "nifty":points[1], "excite":points[2], "eonet":points[3], "biglobe":points[4]}

ave = sum(list(map(int,points))) / int(len(points))

if ave > 90:
    msg = "最高!何やっても上手くいくよ!"
elif 75 < ave < 90:
    msg = "いいね!アグレッシブに行こうぜ!"
elif 50 < ave < 75:
    msg = "OK!気にせずに行こう!"
else:
    msg = "占いの点数なんかに左右されるな。"

print("本日のおうし座の総合運は" + str(ave) + "点です!" + str(msg))
print(detail)

(見るに堪えないプログラムでごめんなしゃい)

これにはウェブスクレイピングというものを使っています。
プログラムを実行すると、自動的にウェブサイト(yahoo, nifty等)にアクセスして情報をもってきてくれます!

例えば、Yahoo!占いで星座占いを検索すると、以下のページを見ることができます。

f:id:tksn8240:20180711000858p:plain
yahoo

これの92点っていう部分を取ってきて、プログラム内で処理するっていうかんじです。

他にも応用すれば、いろいろできます!
為替情報を取得するとか、なんか、いろいろ・・・

んで、これの実行結果は、

f:id:tksn8240:20180711000859p:plain
けっか

このようになりました。
平均点は66点・・・。気の利いたコメントも出ていますね^^





はい。まとめます。

今回はプログラミング言語pythonを使って、「今日の運勢を正確に把握」してみました!
これで一喜一憂することはなくなったのではないでしょうか。(社会的貢献)

しかし、平均値をとることによって、得点が60~70点くらいになってしまいました。。
この結果を見るに、運がいい日悪い日なんかはないということが明らかになりました。

あなたの考え次第で、その日の運勢は変わります。
変えて見せましょう。いい方向に。



お後がよろしいようで!!!
ありがとうございました。